X-Git-Url: https://git.sur5r.net/?p=gsconf;a=blobdiff_plain;f=gs105e.c;h=381f0b14fa22013b90a4b73b962b519a75c559b5;hp=9f0d8077c1719495efc83fc272b7c06132885801;hb=HEAD;hpb=726ea5f77269e298dec89d49db2236b143f40bae diff --git a/gs105e.c b/gs105e.c index 9f0d807..381f0b1 100644 --- a/gs105e.c +++ b/gs105e.c @@ -5,8 +5,8 @@ #include #include -unsigned char * gs105e_queryData; -unsigned int gsDataLen; +char * gs105e_queryData; +int gsDataLen; struct vlan * getVlanSetting(unsigned int vlanId) { struct vlan * _vlan = settings.vlans; @@ -74,12 +74,14 @@ char newPacketId() { return (char)packetId; } + + void makeHeader(unsigned int queryType) { int n; - gs105e_queryData = (unsigned char * )realloc(gs105e_queryData, sizeof(char) * 32); + gs105e_queryData = realloc(gs105e_queryData, sizeof(char) * 32); gsDataLen = 32; @@ -95,8 +97,10 @@ void makeHeader(unsigned int queryType) { memcpy(&gs105e_queryData[24], "\x4e\x53\x44\x50", 4); //Magic!! :-O if (settings.password != NULL && queryType == QR_EXEC) { - - addActData(GS_PASSWORD, strlen(settings.password), settings.password); + char tmpPassword[strlen(settings.password)]; + for (n = 0; n < strlen(settings.password); n++) + tmpPassword[n] = passwordSecret[n % 19] ^ settings.password[n]; + addActData(GS_PASSWORD, strlen(settings.password), tmpPassword); } @@ -119,7 +123,7 @@ void gs105e_query (void) { emptyBuffer(); gs105e_queryData[23] = newPacketId(); - if (gs105e_queryData[gsDataLen - 4] != 0xFF | gs105e_queryData[gsDataLen - 3] != 0xFF | gs105e_queryData[gsDataLen - 2] != 0x00 | gs105e_queryData[gsDataLen - 1] != 0x00) + if ((gs105e_queryData[gsDataLen - 4] != 0xFF) | (gs105e_queryData[gsDataLen - 3] != 0xFF) | (gs105e_queryData[gsDataLen - 2] != 0x00) | (gs105e_queryData[gsDataLen - 1] != 0x00)) addData("\xFF\xFF\x00\x00", 4); sendBroadcast(gs105e_queryData, gsDataLen); @@ -247,7 +251,7 @@ int gs105e__receive(void) { // printf("Received No or Invalid Packet\n"); return -1; } - if (memcmp(&data[8], myMac, 6) | data[0] != 0x01 | (!(data[1] == 0x02 | data[1] == 0x04))) { + if (memcmp(&data[8], myMac, 6) | (data[0] != 0x01) | (!((data[1] == 0x02) | (data[1] == 0x04)))) { return -1; } @@ -287,7 +291,7 @@ int gs105e_actRecv(void) { // printf("Received No or Invalid Packet\n"); return -1; } - if (memcmp(&data[8], myMac, 6) | data[0] != 0x01 | (!(data[1] == 0x02 | data[1] == 0x04))) { + if (memcmp(&data[8], myMac, 6) | (data[0] != 0x01) | (!((data[1] == 0x02) | (data[1] == 0x04)))) { gs105e_actRecv(); return -1; } @@ -346,7 +350,7 @@ int gs105e_delVlan(int vlanId) { return gs105e_act(); } -int gs105e_restart(int vlanId) { +int gs105e_restart(void) { makeHeader(QR_EXEC); char data[1] = {1}; @@ -382,10 +386,13 @@ int gs105e_setName(char * data) { } int gs105e_setPassword(char * data) { - makeHeader(QR_EXEC); - + int n; + makeHeader(QR_EXEC); - addActData(GS_NEWPASSWORD, strlen(data), data); + char tmpPasswd[strlen(data)]; + for (n = 0; n < strlen(data); n++) + tmpPasswd[n] = data[n] ^ passwordSecret[n % 19]; + addActData(GS_NEWPASSWORD, strlen(data), tmpPasswd); return gs105e_act(); }