jamdb_oracle icon indicating copy to clipboard operation
jamdb_oracle copied to clipboard

Kerberos Authentication

Open Steven0351 opened this issue 5 years ago • 2 comments

Would it be possible to include Kerberos Authentication for the database connection options? I'm honestly not even sure what that would entail since I've only ever interfaced with Kerberos authentication via JDBC drivers on the JVM. I'd be open to helping however I can if that's something the project would be willing to maintain, but admittedly I've only been writing Elixir for about a month now and Erlang still looks foreign to me.

Steven0351 avatar Aug 20 '20 20:08 Steven0351

I can make a kerberos authenticated connection to my test Oracle database on openSUSE using SQL Developer with JDBC. Okay, I'll see what I can do with erlang.

wireshark

vstavskyi avatar Aug 21 '20 12:08 vstavskyi

  • Patch java class to to get more debug data
--- Krb5Context.java.new	2020-09-11 16:44:15.270932587 +0300
+++ Krb5Context.java	2020-09-11 17:05:06.282453974 +0300
@@ -717,6 +717,9 @@
                              * succesfully established; however it is easier
                              * to do here and there is no harm indoing it here.
                              */
+                                if (DEBUG) {
+                                    System.out.println(subject.toString());
+                                }
                                 final KerberosTicket kt =
                                     Krb5Util.credsToTicket(serviceCreds);
                                 AccessController.doPrivileged (
@@ -746,6 +749,8 @@
                         state = STATE_DONE;
                     }
                     if (DEBUG) {
+                        System.out.println(tgt.toString());
+                        System.out.println(serviceCreds.toString());
                         System.out.println("Created InitSecContextToken:\n"+
                             new HexDumpEncoder().encodeBuffer(retVal));
                     }
  • This is much better
Java asserts are enabled!
Java config name: null
Native config name: /etc/krb5.conf
Loaded from native config
>>> KdcAccessibility: reset
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 18 17 16 23.
>>> KrbAsReq creating message
>>> KrbKdcReq send: kdc=proc-mike UDP:88, timeout=30000, number of retries =3, #bytes=136
>>> KDCCommunication: kdc=proc-mike UDP:88, timeout=30000,Attempt =1, #bytes=136
>>> KrbKdcReq send: #bytes read=633
>>> KdcAccessibility: remove proc-mike
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
>>> KrbAsRep cons in KrbAsReq.getReply KOPL
Found ticket for KOPL@PROC-MIKE to go to krbtgt/PROC-MIKE@PROC-MIKE expiring on Fri Sep 11 01:42:54 EEST 2020
Entered Krb5Context.initSecContext with state=STATE_NEW
Found ticket for KOPL@PROC-MIKE to go to krbtgt/PROC-MIKE@PROC-MIKE expiring on Fri Sep 11 01:42:54 EEST 2020
Service ticket not found in the subject
>>> Credentials acquireServiceCreds: same realm
Using builtin default etypes for default_tgs_enctypes
default etypes for default_tgs_enctypes: 18 17 16 23.
>>> CksumType: sun.security.krb5.internal.crypto.RsaMd5CksumType
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
>>> KrbKdcReq send: kdc=proc-mike UDP:88, timeout=30000, number of retries =3, #bytes=626
>>> KDCCommunication: kdc=proc-mike UDP:88, timeout=30000,Attempt =1, #bytes=626
>>> KrbKdcReq send: #bytes read=592
>>> KdcAccessibility: remove proc-mike
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
Subject:
        Principal: KOPL@PROC-MIKE
        Private Credential: Ticket (hex) = 
0000: 61 82 01 34 30 82 01 30   A0 03 02 01 05 A1 0B 1B  a..40..0........
0010: 09 50 52 4F 43 2D 4D 49   4B 45 A2 1E 30 1C A0 03  .PROC-MIKE..0...
0020: 02 01 02 A1 15 30 13 1B   06 6B 72 62 74 67 74 1B  .....0...krbtgt.
0030: 09 50 52 4F 43 2D 4D 49   4B 45 A3 81 FB 30 81 F8  .PROC-MIKE...0..
0040: A0 03 02 01 12 A1 03 02   01 02 A2 81 EB 04 81 E8  ................
0050: 92 C9 A0 91 73 51 6E 43   89 33 0F 3B 0C 69 A3 ED  ....sQnC.3.;.i..
0060: 9A D8 16 F1 67 33 7F BA   F7 A6 B4 B7 53 80 AE E8  ....g3......S...
0070: F8 F4 CA EB 40 F5 57 32   5F 47 EA 58 48 D2 E7 72  [email protected]_G.XH..r
0080: D0 D8 45 BD 69 F7 B4 7A   34 B1 75 18 C3 11 1E 8D  ..E.i..z4.u.....
0090: 36 CA 7F 74 6C A5 63 C5   1B 7E A4 87 F7 4C 39 E1  6..tl.c......L9.
00A0: B2 AB 84 4F 5B 73 C6 24   E5 86 77 9E 3E 2B 6A 6D  ...O[s.$..w.>+jm
00B0: BB 2C 3E 36 11 13 E7 BB   0D 40 A1 8B F7 E8 D6 26  .,>6.....@.....&
00C0: F0 35 D4 A2 66 68 82 72   0F 25 C6 97 90 D2 8C 50  .5..fh.r.%.....P
00D0: 20 97 E4 36 BE 53 64 63   F4 C0 B1 36 12 0D 9E 7B   ..6.Sdc...6....
00E0: CA 3B 4D 0D 4E C0 69 46   53 57 01 A8 CA 54 F5 4F  .;M.N.iFSW...T.O
00F0: 85 72 3F C5 1F 73 29 EF   63 21 29 25 75 8A 44 A8  .r?..s).c!)%u.D.
0100: EF B9 D4 5D 93 E5 C3 20   12 CA EE 84 C8 51 C6 1A  ...]... .....Q..
0110: 59 E2 A6 BD 05 87 9B EF   A1 0B F4 E4 D4 6A A3 A6  Y............j..
0120: 2E C9 77 1E 85 CF 47 C1   F3 D3 6B CC 44 EF 4E F7  ..w...G...k.D.N.
0130: F1 32 BD 1C FF B4 4A 7E                            .2....J.

Client Principal = KOPL@PROC-MIKE
Server Principal = krbtgt/PROC-MIKE@PROC-MIKE
Session Key = EncryptionKey: keyType=18 keyBytes (hex dump)=
0000: A3 80 C5 10 99 B9 AC BD   7D 12 B2 F7 46 FF DF 28  ............F..(
0010: CF 44 19 47 D7 BD DE 64   DC B6 3D 98 8D E1 1B 9D  .D.G...d..=.....


Forwardable Ticket false
Forwarded Ticket false
Proxiable Ticket false
Proxy Ticket false
Postdated Ticket false
Renewable Ticket false
Initial Ticket false
Auth Time = Thu Sep 10 15:42:54 EEST 2020
Start Time = Thu Sep 10 15:42:54 EEST 2020
End Time = Fri Sep 11 01:42:54 EEST 2020
Renew Till = null
Client Addresses  Null 

>>> KrbApReq: APOptions are 00000000 00000000 00000000 00000000
>>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType
Krb5Context setting mySeqNumber to: 651736746
Krb5Context setting peerSeqNumber to: 0
Credentials:
      client=KOPL@PROC-MIKE
      server=krbtgt/PROC-MIKE@PROC-MIKE
    authTime=20200910124254Z
   startTime=20200910124254Z
     endTime=20200910224254Z
   renewTill=null
       flags=INITIAL
EType (skey)=18
   (tkt key)=18
Credentials:
      client=KOPL@PROC-MIKE
      server=oracle/proc-mike@PROC-MIKE
    authTime=20200910124254Z
     endTime=20200910224254Z
   renewTill=null
       flags=
EType (skey)=18
   (tkt key)=18
Created InitSecContextToken:
0000: 01 00 6E 82 02 21 30 82   02 1D A0 03 02 01 05 A1  ..n..!0.........
0010: 03 02 01 0E A2 07 03 05   00 00 00 00 00 A3 82 01  ................
0020: 38 61 82 01 34 30 82 01   30 A0 03 02 01 05 A1 0B  8a..40..0.......
0030: 1B 09 50 52 4F 43 2D 4D   49 4B 45 A2 1E 30 1C A0  ..PROC-MIKE..0..
0040: 03 02 01 00 A1 15 30 13   1B 06 6F 72 61 63 6C 65  ......0...oracle
0050: 1B 09 70 72 6F 63 2D 6D   69 6B 65 A3 81 FB 30 81  ..proc-mike...0.
0060: F8 A0 03 02 01 12 A1 03   02 01 02 A2 81 EB 04 81  ................
0070: E8 E9 71 FB B4 28 94 94   0A 0B 68 02 FF B2 83 2E  ..q..(....h.....
0080: 4B 85 CD 05 F3 7C E7 5B   03 98 52 C1 5F 93 D3 D8  K......[..R._...
0090: B5 93 8B 3E B0 0B 94 4B   F1 FD E2 F9 C5 4C 85 08  ...>...K.....L..
00A0: 95 78 B0 8E 5B 84 DA 3E   2E 09 5A 8B 0A 7B 74 F6  .x..[..>..Z...t.
00B0: 80 D7 67 F6 3D B3 69 95   6E 68 3D 93 C9 F6 40 1B  ..g.=.i.nh=...@.
00C0: F4 46 9A DC 12 14 B1 56   54 ED C3 29 89 A7 24 9F  .F.....VT..)..$.
00D0: 3D BD 9C E9 CC A8 D1 29   80 70 9B D9 BC C7 A1 C4  =......).p......
00E0: 70 00 3E 44 11 CF F8 05   C4 F0 DB 8F F8 88 8A 35  p.>D...........5
00F0: 19 B2 45 F1 89 66 70 77   C5 09 85 AE 9C 69 C6 15  ..E..fpw.....i..
0100: 07 03 FF 37 56 53 06 7E   C4 A0 82 D5 5D 96 89 64  ...7VS......]..d
0110: 46 D8 E5 25 D1 6F 40 9E   6C 23 E2 23 85 8D A0 69  F..%[email protected]#.#...i
0120: 38 45 BE AC B8 1F 20 ED   C8 C1 9E 4D 3F 7A 8C 48  8E.... ....M?z.H
0130: 0A E3 81 A3 FD 52 15 F6   14 6E 75 E7 38 8B 85 72  .....R...nu.8..r
0140: 1A 14 D2 33 D7 AF B4 A8   C6 07 A3 33 52 AC FF DF  ...3.......3R...
0150: 4F 60 38 24 22 45 18 8F   BE A4 81 CB 30 81 C8 A0  O`8$"E......0...
0160: 03 02 01 12 A2 81 C0 04   81 BD D9 7E 2F A8 FC B0  ............/...
0170: 2E 2F 20 81 CA 9C 87 68   27 C8 96 6D 8E F3 7B 84  ./ ....h'..m....
0180: 4F 19 F3 25 45 AC 18 8F   A1 65 55 94 3C 12 09 2D  O..%E....eU.<..-
0190: D2 1E 15 5C 49 BD 88 31   FF 60 72 C9 6B FD F3 AA  ...\I..1.`r.k...
01A0: 15 C4 72 71 0B 6C 41 EC   26 F1 F6 8E 15 FA C3 8B  ..rq.lA.&.......
01B0: 59 D6 51 C2 9A 75 E7 0A   90 72 AB C6 49 56 87 02  Y.Q..u...r..IV..
01C0: 35 46 F6 60 E4 CA D5 17   FE C3 94 FC FD A2 5A F1  5F.`..........Z.
01D0: 14 B0 E9 25 C0 1A 76 8C   93 4C 89 F3 2D 22 6E 10  ...%..v..L..-"n.
01E0: CC 76 70 E0 88 71 68 F7   01 A6 92 97 FF AD 45 E8  .vp..qh.......E.
01F0: 33 EB 58 02 5B 24 E7 30   27 BB 34 D9 CB F9 2E 9B  3.X.[$.0'.4.....
0200: D7 9A FA 56 35 ED 25 70   35 C0 FF 69 BB 2B 87 F3  ...V5.%p5..i.+..
0210: 1F 4B 0A 20 9E B5 FA 5F   19 94 A1 F4 21 C8 5C 50  .K. ..._....!.\P
0220: 97 80 32 B6 2C 88 A1                               ..2.,..

UsersCache.fillIn() time = 4  ret==null?: true
  • Response packet with DEADBEEF headers and Credentials
0000   00 00 03 04 00 06 00 00 00 00 00 00 99 00 08 00   ................
0010   45 00 00 6a 47 fd 40 00 40 06 b4 55 0a 37 14 e7   E..jG.@[email protected]..
0020   0a 37 14 e7 05 f1 b9 0c 53 f5 5c 27 8f 7f c6 c4   .7......S.\'....
0030   80 18 01 6f 3e 98 00 00 01 01 08 0a 13 6f 1c bc   ...o>........o..
0040   13 6f 1c bc 00 00 00 36 06 20 00 00 00 00 de ad   .o.....6. ......
0050   be ef 00 2c 00 00 00 00 00 01 00 00 01 00 02 00   ...,............
0060   00 00 00 00 06 00 00 6f 72 61 63 6c 65 00 09 00   .......oracle...
0070   00 70 72 6f 63 2d 6d 69 6b 65                     .proc-mike
  • Request packet with DEADBEEF headers and InitSecContextToken
0000   00 00 03 04 00 06 00 00 00 00 00 00 6c 62 08 00   ............lb..
0010   45 00 02 92 d8 a7 40 00 40 06 21 83 0a 37 14 e7   E.....@.@.!..7..
0020   0a 37 14 e7 b9 0c 05 f1 8f 7f c6 c4 53 f5 5c 5d   .7..........S.\]
0030   80 18 01 5e 40 c0 00 00 01 01 08 0a 13 6f 1c c7   ...^@........o..
0040   13 6f 1c bc 00 00 02 5e 06 20 00 00 00 00 de ad   .o.....^. ......
0050   be ef 02 54 0a 20 00 00 00 01 00 00 01 00 04 00   ...T. ..........
0060   00 00 00 00 02 00 03 00 02 00 04 00 04 00 00 00   ................
0070   04 00 04 00 01 0a 37 14 e7 02 25 00 01 6e 82 02   ......7...%..n..
0080   21 30 82 02 1d a0 03 02 01 05 a1 03 02 01 0e a2   !0..............
0090   07 03 05 00 00 00 00 00 a3 82 01 38 61 82 01 34   ...........8a..4
00a0   30 82 01 30 a0 03 02 01 05 a1 0b 1b 09 50 52 4f   0..0.........PRO
00b0   43 2d 4d 49 4b 45 a2 1e 30 1c a0 03 02 01 00 a1   C-MIKE..0.......
00c0   15 30 13 1b 06 6f 72 61 63 6c 65 1b 09 70 72 6f   .0...oracle..pro
00d0   63 2d 6d 69 6b 65 a3 81 fb 30 81 f8 a0 03 02 01   c-mike...0......
00e0   12 a1 03 02 01 02 a2 81 eb 04 81 e8 e9 71 fb b4   .............q..
00f0   28 94 94 0a 0b 68 02 ff b2 83 2e 4b 85 cd 05 f3   (....h.....K....
0100   7c e7 5b 03 98 52 c1 5f 93 d3 d8 b5 93 8b 3e b0   |.[..R._......>.
0110   0b 94 4b f1 fd e2 f9 c5 4c 85 08 95 78 b0 8e 5b   ..K.....L...x..[
0120   84 da 3e 2e 09 5a 8b 0a 7b 74 f6 80 d7 67 f6 3d   ..>..Z..{t...g.=
0130   b3 69 95 6e 68 3d 93 c9 f6 40 1b f4 46 9a dc 12   [email protected]...
0140   14 b1 56 54 ed c3 29 89 a7 24 9f 3d bd 9c e9 cc   ..VT..)..$.=....
0150   a8 d1 29 80 70 9b d9 bc c7 a1 c4 70 00 3e 44 11   ..).p......p.>D.
0160   cf f8 05 c4 f0 db 8f f8 88 8a 35 19 b2 45 f1 89   ..........5..E..
0170   66 70 77 c5 09 85 ae 9c 69 c6 15 07 03 ff 37 56   fpw.....i.....7V
0180   53 06 7e c4 a0 82 d5 5d 96 89 64 46 d8 e5 25 d1   S.~....]..dF..%.
0190   6f 40 9e 6c 23 e2 23 85 8d a0 69 38 45 be ac b8   [email protected]#.#...i8E...
01a0   1f 20 ed c8 c1 9e 4d 3f 7a 8c 48 0a e3 81 a3 fd   . ....M?z.H.....
01b0   52 15 f6 14 6e 75 e7 38 8b 85 72 1a 14 d2 33 d7   R...nu.8..r...3.
01c0   af b4 a8 c6 07 a3 33 52 ac ff df 4f 60 38 24 22   ......3R...O`8$"
01d0   45 18 8f be a4 81 cb 30 81 c8 a0 03 02 01 12 a2   E......0........
01e0   81 c0 04 81 bd d9 7e 2f a8 fc b0 2e 2f 20 81 ca   ......~/..../ ..
01f0   9c 87 68 27 c8 96 6d 8e f3 7b 84 4f 19 f3 25 45   ..h'..m..{.O..%E
0200   ac 18 8f a1 65 55 94 3c 12 09 2d d2 1e 15 5c 49   ....eU.<..-...\I
0210   bd 88 31 ff 60 72 c9 6b fd f3 aa 15 c4 72 71 0b   ..1.`r.k.....rq.
0220   6c 41 ec 26 f1 f6 8e 15 fa c3 8b 59 d6 51 c2 9a   lA.&.......Y.Q..
0230   75 e7 0a 90 72 ab c6 49 56 87 02 35 46 f6 60 e4   u...r..IV..5F.`.
0240   ca d5 17 fe c3 94 fc fd a2 5a f1 14 b0 e9 25 c0   .........Z....%.
0250   1a 76 8c 93 4c 89 f3 2d 22 6e 10 cc 76 70 e0 88   .v..L..-"n..vp..
0260   71 68 f7 01 a6 92 97 ff ad 45 e8 33 eb 58 02 5b   qh.......E.3.X.[
0270   24 e7 30 27 bb 34 d9 cb f9 2e 9b d7 9a fa 56 35   $.0'.4........V5
0280   ed 25 70 35 c0 ff 69 bb 2b 87 f3 1f 4b 0a 20 9e   .%p5..i.+...K. .
0290   b5 fa 5f 19 94 a1 f4 21 c8 5c 50 97 80 32 b6 2c   .._....!.\P..2.,
02a0   88 a1                                             ..
  • After java I started making erlang NIF library

Not much so far.

UPDATED 2020-09-18

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <krb5/krb5.h>
#include "erl_nif.h"

/*
 * internal
 */

void dump_data(krb5_data *data)
{
    unsigned char *ptr = (unsigned char *)data->data;
    int i;
    for (i=0; i<data->length; i++) {
        fprintf(stderr, "%02x ", ptr[i]);
        //if ((i % 16) == 15) fprintf(stderr, "\n");
    }
    fprintf(stderr, "\n");
}

void dump_data2(krb5_data *data)
{
    unsigned char *ptr = (unsigned char *)data->data;
    int i;
    for (i=0; i<data->length; i++) {
        fprintf(stderr, "%c", (ptr[i] > 0x20 && ptr[i] < 0x7f) ? ptr[i] : 0x2e);
        //if ((i % 16) == 15) fprintf(stderr, "\n");
    }
    fprintf(stderr, "\n");
}

/*
 * internal
 */

static ERL_NIF_TERM k5error(ErlNifEnv* env, long ret) {
    return enif_make_tuple2(env, enif_make_atom(env, "error"), enif_make_long(env, ret));
}

static ERL_NIF_TERM k5return(ErlNifEnv* env, krb5_data *data) {
    ErlNifBinary bin;
    if (!enif_alloc_binary(data->length, &bin))
    return k5error(env, KV5M_NONE);
    memcpy(bin.data, data->data, data->length);
    return enif_make_tuple2(env, enif_make_atom(env, "ok"), enif_make_binary(env, &bin));
}

static ERL_NIF_TERM k5logon(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {

    krb5_error_code ret = 0;
    krb5_get_init_creds_opt *opts = NULL;
    krb5_principal princ = NULL;
    krb5_ccache cc = NULL;
    krb5_creds creds;
    krb5_context ctx;

    krb5_principal service_princ = NULL;
    krb5_creds *service_creds;

    krb5_data req;

    ErlNifBinary name, password, service;

    if (!enif_inspect_binary(env, argv[0], &name)
     || !enif_inspect_binary(env, argv[1], &password)
     || !enif_inspect_binary(env, argv[2], &service))
    return enif_make_badarg(env);

    memset(&creds, 0, sizeof(creds));

    ret = krb5_init_secure_context(&ctx);
    if (ret) {
    return k5error(env, ret);
    }

    ret = krb5_parse_name(ctx, name.data, &princ);
    if (ret) {
    return k5error(env, ret);
    }

    ret = krb5_parse_name(ctx, service.data, &service_princ);
    if (ret) {
    return k5error(env, ret);
    }

    //ret = krb5_cc_resolve(ctx, "/tmp/krb5cc_jamdb", &cc);
    ret = krb5_cc_resolve(ctx, "MEMORY", &cc);
    if (ret) {
    return k5error(env, ret);
    }

    ret = krb5_cc_initialize(ctx, cc, princ);
    if (ret) {
    return k5error(env, ret);
    }

    ret = krb5_get_init_creds_opt_alloc(ctx, &opts);
    if (ret) {
    return k5error(env, ret);
    }

    krb5_get_init_creds_opt_set_tkt_life(opts, 5 * 60);

    ret = krb5_get_init_creds_password(ctx, &creds, princ, password.data, NULL, NULL, 0, NULL, opts);
    if (ret) {
    return k5error(env, ret);
    }

    dump_data(&creds.ticket);
    dump_data2(&creds.ticket);

    ret = krb5_copy_creds(ctx, &creds, &service_creds);
    if (ret) {
    return k5error(env, ret);
    }

    service_creds->server = service_princ;
    service_creds->ticket_flags = 0;

    ret = krb5_mk_req_extended(ctx, &auth_ctx, 1, NULL, service_creds, &req);
    if (ret) {
    return k5error(env, ret);
    }

    dump_data(&req);
    dump_data2(&req);

    return k5return(env, &req);
}


static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) {
    return 0;
}

static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data,
    ERL_NIF_TERM load_info) {
    return 0;
}

static void unload(ErlNifEnv* env, void* priv_data) {

}

static ErlNifFunc nif_funcs[] =  {
    {"k5logon", 3, k5logon}
};

ERL_NIF_INIT(jamdb_krb_app, nif_funcs, load, NULL, upgrade, unload)


load_nif ok

61 82 01 34 30 82 01 30 a0 03 02 01 05 a1 0b 1b 09 50 52 4f 43 2d 4d 49 4b 45 a2 1e 30 1c a0 03 02 01 02 a1 15 30 13 1b 06 6b 72 62 74 67 74 1b 09 50 52 4f 43 2d 4d 49 4b 45 a3 81 fb 30 81 f8 a0 03 02 01 12 a1 03 02 01 02 a2 81 eb 04 81 e8 82 8e b2 62 99 0f 81 f2 e6 f2 2c a0 2c b6 21 85 98 0d 39 3a 66 96 0d 89 ea 67 c9 1d 0c cf fe 70 fd 60 22 b2 e5 7e 30 12 9e e2 e7 a7 9d fe 16 45 9d b3 fd 07 f2 83 80 05 ad 26 e4 9a 79 db 18 ce 2c ec 37 45 e5 6d cf 19 16 ac 29 ea 39 9c 4a f9 f0 34 48 80 35 13 6c 7e 70 8a f1 c2 c0 19 d6 ef b6 e4 d0 90 73 4b 29 78 9a 65 a6 3e df 75 0e df d6 ae 79 23 a4 6d 86 40 56 48 22 89 50 4f 40 d6 b3 d1 62 18 2b 11 44 6a c3 7f bc 39 a2 e9 52 31 d3 dd 88 78 c5 73 0c b6 45 e1 13 c2 dd ef d6 e1 68 7f 17 80 ae 1d 6f e6 58 fb 5c 83 9a 78 74 1b 24 11 6b 35 a3 ed ee 09 6c 7c 2d bf 9b 4e 4b 05 b1 e7 e1 54 3b eb 7b 3f 0a 95 7b 5a bd be 1f 16 d0 8e 61 1c 3f cc 5e 8f 7d 2a fe e5 52 55 83 a6 d8 9a e0 fe ba 57 99 84

a..40..0.........PROC-MIKE..0........0...krbtgt..PROC-MIKE...0.....................b......,.,.!...9:f....g.....p.`"..~0........E.........&..y...,.7E.m....).9.J..4H.5.l~p...........sK)x.e.>.u....y#.m.@VH"[email protected].+.Dj...9..R1...x.s..E.......h.....o.X.\..xt.$.k5....l|-..NK....T;.{?..{Z......a.?.^.}*..RU.......W..
                                            
6e 82 01 f0 30 82 01 ec a0 03 02 01 05 a1 03 02 01 0e a2 07 03 05 00 00 00 00 00 a3 82 01 38 61 82 01 34 30 82 01 30 a0 03 02 01 05 a1 0b 1b 09 50 52 4f 43 2d 4d 49 4b 45 a2 1e 30 1c a0 03 02 01 02 a1 15 30 13 1b 06 6b 72 62 74 67 74 1b 09 50 52 4f 43 2d 4d 49 4b 45 a3 81 fb 30 81 f8 a0 03 02 01 12 a1 03 02 01 02 a2 81 eb 04 81 e8 82 8e b2 62 99 0f 81 f2 e6 f2 2c a0 2c b6 21 85 98 0d 39 3a 66 96 0d 89 ea 67 c9 1d 0c cf fe 70 fd 60 22 b2 e5 7e 30 12 9e e2 e7 a7 9d fe 16 45 9d b3 fd 07 f2 83 80 05 ad 26 e4 9a 79 db 18 ce 2c ec 37 45 e5 6d cf 19 16 ac 29 ea 39 9c 4a f9 f0 34 48 80 35 13 6c 7e 70 8a f1 c2 c0 19 d6 ef b6 e4 d0 90 73 4b 29 78 9a 65 a6 3e df 75 0e df d6 ae 79 23 a4 6d 86 40 56 48 22 89 50 4f 40 d6 b3 d1 62 18 2b 11 44 6a c3 7f bc 39 a2 e9 52 31 d3 dd 88 78 c5 73 0c b6 45 e1 13 c2 dd ef d6 e1 68 7f 17 80 ae 1d 6f e6 58 fb 5c 83 9a 78 74 1b 24 11 6b 35 a3 ed ee 09 6c 7c 2d bf 9b 4e 4b 05 b1 e7 e1 54 3b eb 7b 3f 0a 95 7b 5a bd be 1f 16 d0 8e 61 1c 3f cc 5e 8f 7d 2a fe e5 52 55 83 a6 d8 9a e0 fe ba 57 99 84 a4 81 9a 30 81 97 a0 03 02 01 12 a2 81 8f 04 81 8c b3 4e 17 c9 25 57 42 c5 b0 6b 1e 54 6e e7 b0 97 f1 aa 79 0d 60 80 34 cf cd ef ae 1b 0b 11 e2 6d 9a 95 36 fb c7 b4 6d ed 88 78 80 f0 9e cd 9f c9 f6 b7 53 dd 3b a8 d5 bd 3e 5d b6 ce dd 53 d0 5c 50 b5 31 48 4d 38 f8 83 b0 b9 4f f4 7f 19 03 cd 9f ee 4b b2 7a b9 cc b8 eb 60 7b 99 59 d7 b7 6a 58 25 db e2 12 b4 d6 33 31 6a c9 ea d5 a0 87 e6 c4 ca 4f 32 50 85 47 40 9f df 52 44 55 e9 ef 97 88 ae b9 e9 89 d7 62 d7 a8 b0 10 4b

n...0.........................8a..40..0.........PROC-MIKE..0........0...krbtgt..PROC-MIKE...0.....................b......,.,.!...9:f....g.....p.`"..~0........E.........&..y...,.7E.m....).9.J..4H.5.l~p...........sK)x.e.>.u....y#.m.@VH"[email protected].+.Dj...9..R1...x.s..E.......h.....o.X.\..xt.$.k5....l|-..NK....T;.{?..{Z......a.?.^.}*..RU.......W.....0..............N..%WB..k.Tn.....y.`.4........m..6...m..x........S.;...>]...S.\P.1HM8....O.......K.z....`{.Y..jX%[email protected]
          
{ok,<<110,130,1,240,48,130,1,236,160,3,2,1,5,161,3,2,1,14,162,7,3,5,0,0,0,0,0,
      163,130,1,56,97,130,1,52,48,130,1,48,160,3,2,1,5,161,11,27,9,80,82,79,
      67,45,77,73,75,69,162,30,48,28,160,3,2,1,2,161,21,48,19,27,6,107,114,98,
      116,103,116,27,9,80,82,79,67,45,77,73,75,69,163,129,251,48,129,248,160,
      3,2,1,18,161,3,2,1,2,162,129,235,4,129,232,130,142,178,98,153,15,129,
      242,230,242,44,160,44,182,33,133,152,13,57,58,102,150,13,137,234,103,
      201,29,12,207,254,112,253,96,34,178,229,126,48,18,158,226,231,167,157,
      254,22,69,157,179,253,7,242,131,128,5,173,38,228,154,121,219,24,206,44,
      236,55,69,229,109,207,25,22,172,41,234,57,156,74,249,240,52,72,128,53,
      19,108,126,112,138,241,194,192,25,214,239,182,228,208,144,115,75,41,120,
      154,101,166,62,223,117,14,223,214,174,121,35,164,109,134,64,86,72,34,
      137,80,79,64,214,179,209,98,24,43,17,68,106,195,127,188,57,162,233,82,
      49,211,221,136,120,197,115,12,182,69,225,19,194,221,239,214,225,104,127,
      23,128,174,29,111,230,88,251,92,131,154,120,116,27,36,17,107,53,163,237,
      238,9,108,124,45,191,155,78,75,5,177,231,225,84,59,235,123,63,10,149,
      123,90,189,190,31,22,208,142,97,28,63,204,94,143,125,42,254,229,82,85,
      131,166,216,154,224,254,186,87,153,132,164,129,154,48,129,151,160,3,2,1,
      18,162,129,143,4,129,140,179,78,23,201,37,87,66,197,176,107,30,84,110,
      231,176,151,241,170,121,13,96,128,52,207,205,239,174,27,11,17,226,109,
      154,149,54,251,199,180,109,237,136,120,128,240,158,205,159,201,246,183,
      83,221,59,168,213,189,62,93,182,206,221,83,208,92,80,181,49,72,77,56,
      248,131,176,185,79,244,127,25,3,205,159,238,75,178,122,185,204,184,235,
      96,123,153,89,215,183,106,88,37,219,226,18,180,214,51,49,106,201,234,
      213,160,135,230,196,202,79,50,80,133,71,64,159,223,82,68,85,233,239,151,
      136,174,185,233,137,215,98,215,168,176,16,75>>}

vstavskyi avatar Sep 11 '20 14:09 vstavskyi