dr_mike oder halt mit nem anderen QNAP NAS via SSH und ETH0 MAC 
OneCD hat den Cloudkey Code dekompiliert aber sieht ziemlich wurstellig kompliziert aus .. wer will und sich mit bash Skripting auskennt, kann da ja gerne mal drüber gucken.
Call aus nasutil:
v5 = QNAP_MAC_To_Cloudkey(s, v13, 20LL);
if ( v5 )
puts("fail MAC.");
else
puts(v13);
break;
Snippet aus libuLinux_Util.so.0.0
__int64 __fastcall QNAP_MAC_To_Cloudkey(const char *a1, char *a2, int a3)
{
__int64 v5[3]; // [rsp+20h] [rbp-F0h] BYREF
char v6; // [rsp+38h] [rbp-D8h]
__int64 v7[3]; // [rsp+40h] [rbp-D0h] BYREF
char v8; // [rsp+58h] [rbp-B8h]
__int64 v9[3]; // [rsp+60h] [rbp-B0h] BYREF
char v10; // [rsp+78h] [rbp-98h]
int v11[4]; // [rsp+80h] [rbp-90h] BYREF
__int16 v12[8]; // [rsp+90h] [rbp-80h] BYREF
char nptr[4]; // [rsp+A0h] [rbp-70h] BYREF
__int16 v14; // [rsp+A4h] [rbp-6Ch]
char v15; // [rsp+A6h] [rbp-6Ah]
int v16; // [rsp+B0h] [rbp-60h] BYREF
__int16 v17; // [rsp+B4h] [rbp-5Ch]
char v18; // [rsp+B6h] [rbp-5Ah]
__int64 v19[4]; // [rsp+C0h] [rbp-50h] BYREF
char v20[8]; // [rsp+E0h] [rbp-30h] BYREF
__int64 v21; // [rsp+E8h] [rbp-28h]
__int64 v22; // [rsp+F0h] [rbp-20h]
int v23; // [rsp+F8h] [rbp-18h]
unsigned int v24; // [rsp+FCh] [rbp-14h]
int v25; // [rsp+100h] [rbp-10h]
unsigned int v26; // [rsp+104h] [rbp-Ch]
int v27; // [rsp+108h] [rbp-8h]
unsigned int i; // [rsp+10Ch] [rbp-4h]
*(_QWORD *)v20 = 0LL;
v21 = 0LL;
v22 = 0LL;
v23 = 0;
memset(v19, 0, sizeof(v19));
v16 = 0;
v17 = 0;
v18 = 0;
*(_DWORD *)nptr = 0;
v14 = 0;
v15 = 0;
v12[0] = 0;
v11[0] = 0;
memset(v9, 0, sizeof(v9));
v10 = 0;
memset(v7, 0, sizeof(v7));
v8 = 0;
memset(v5, 0, sizeof(v5));
v6 = 0;
i = 0;
v27 = 0;
v25 = 0;
v26 = -1;
v24 = 0;
if ( a1 && a2 && a3 > 10 )
{
v25 = strlen(a1);
while ( v27 < v25 )
{
if ( a1[v27] == 58 )
{
++v27;
}
else
{
*((_BYTE *)v19 + (int)i++) = toupper(a1[v27]);
if ( i > 0x1E )
break;
++v27;
}
}
if ( (unsigned int)sub_23E57((const char *)v19) )
{
for ( i = 0; (int)i <= 5; ++i )
{
*((_BYTE *)&v16 + (int)i) = *((_BYTE *)v19 + (int)i);
nptr[i] = *((_BYTE *)v19 + (int)(i + 6));
}
v24 = strtoll(nptr, 0LL, 16);
if ( !(unsigned int)sub_2446F(v24, (__int64)v9, 25) )
{
sub_23EE2((const char *)v9);
if ( !(unsigned int)sub_23F86((const char *)v9, (char *)v7, 25)
&& !(unsigned int)sub_24130((const char *)v7, (char *)v5, 25) )
{
sub_23EE2((const char *)v5);
if ( !(unsigned int)sub_2423B((const char *)&v16, (char *)v12, 2, (char *)v11, 4) )
{
snprintf(v20, 0x1CuLL, "%s%s", (const char *)v11, (const char *)v5);
v24 = strtoll(v20, 0LL, 2);
snprintf(a2, a3, "%s%08d", (const char *)v12, v24);
return 0;
}
}
}
}
}
return v26;
}
Alles anzeigen