//--------------------------------------------------------------------------- string TranseMeasure::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( TRANSE_MEASURE, 4 ); stream << hexToString( item, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); // set start and end trailer for command command = createTrailer( message ); return command; }
//--------------------------------------------------------------------------- string GetProfile::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( GET_PROFILE, 4 ); stream << hexToString( profile_number_, 4 ); stream << hexToString( profile_format_, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); // set start and end trailer for command command = createTrailer( message ); return command; }
//--------------------------------------------------------------------------- string DoReset::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( DO_RESET, 4 ); stream << hexToString( reset_level_, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); // set start and end trailer for command command = createTrailer( message ); return command; }
//--------------------------------------------------------------------------- string GetIndification::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( GET_IDENTIFICATION, 4 ); stream << hexToString( ident_item_, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); command = createTrailer( message ); return command; }
//--------------------------------------------------------------------------- string SetTimeRelative::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( SET_TIME_REL, 4 ); stream << hexToString( time_diff_, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); // set start and end trailer for command command = createTrailer( message ); return command; }
//--------------------------------------------------------------------------- string SetConfig::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( SET_CONFIG, 4 ); stream << hexToString( config_item_, 4 ); stream << hexToString( baudrate_, 4 ); stream << hexToString( parity_, 4 ); stream << hexToString( stop_bit_, 4 ); stream << hexToString( character_, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); // set start and end trailer for command command = createTrailer( message ); return command; }
//отключает выбраную radioButton что б не вызвать себя повторно. Устанавливает новую маску для //набратого сообщения. Так же меняет текст на другой формат. void MainWindow::setTextMode() { QString tmp = (ui->send_text_lineEdit->text()).trimmed(); ui->send_text_lineEdit->setInputMask("nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"); setWindowTitle("Serial Text Console"); ui->send_text_lineEdit->clear(); ui->send_text_lineEdit->setCursorPosition(0); //отключает выбраную radioButton что б не вызвать себя повторно. ui->text_radioButton->setDisabled(true); ui->hex_radioButton->setDisabled(false); if (!hexToString(tmp)) return; ui->send_text_lineEdit->setText(tmp); ui->send_text_lineEdit->setCursorPosition(0); QStringList messanges = ui->log_textBrowser->toPlainText().split('\n'); tmp.clear(); ui->log_textBrowser->clear(); //построчно парсим лог. Найденые сообщения меняем на другой формат //так как получили чистый тескст добавляем теги цветов //и выводим обратно for (int i=0;i<messanges.length();i++) { if (messanges[i].contains("Send: ")) { //находим место где начинается наше сообщение int index = messanges[i].indexOf(": ")+2; //получаем его и переводим в другой формат tmp = messanges[i].mid(index); //ecли возникла ошибка при преобразовании - выходим if (!hexToString(tmp)) return; //обрезаем лишнее. Добавляем преобразованое сообщение, а так же теги messanges[i].truncate(index); messanges[i] = messanges[i].append(tmp).prepend("<font color=\"blue\">").append("<//font>"); } if (messanges[i].contains("Answer: ")) { int index = messanges[i].indexOf(": ")+2; tmp = messanges[i].mid(index); if (!hexToString(tmp)) return; messanges[i].truncate(index); messanges[i] = messanges[i].append(tmp).prepend("<font color=\"orange\">").append("<//font>"); } if (messanges[i].contains(" Error: ")) { messanges[i].prepend("<font color=\"red\">").append("<//font>"); } ui->log_textBrowser->append(messanges[i]); }; }
void MainWindow::runScript() { //проверяем есть ли файл настроек QFile file(ui->filePath_lineEdit->text()); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){ printErrorMessage("Can't open file"); printErrorMessage("Script aborted"); return; } QTextStream script(&file); QString tmp; //проходим по каждой строчке скрипта while (!script.atEnd()) { script>>tmp; if (tmp.contains("SendSTR")) { tmp.clear(); //считываем все до конца строки tmp = script.readLine(); //обрезаем все до " tmp.remove(0,tmp.indexOf('\"',0)+1); //обрезаем все после " tmp.truncate(tmp.lastIndexOf('\"')); printMessageFromScrip(tmp); port.sendData(tmp + '\r'); continue; } if (tmp.contains("SendHEX")) { tmp.clear(); tmp = script.readLine(); tmp.remove(0,tmp.indexOf('\"',0)+1); tmp.truncate(tmp.lastIndexOf('\"')); QString tmp_message_at_hex = tmp; if (!hexToString(tmp)) { printErrorMessage("Inappropriate script. Error at \"" + tmp_message_at_hex + "\" . Script aborted"); file.close(); return; } printMessageFromScrip(tmp); port.sendData(tmp); continue; } if (tmp.contains("DELAY")) { bool ok = false; tmp.clear(); tmp = script.readLine().trimmed(); quint32 ms = tmp.toUInt(&ok,10); if (!ok ) { printErrorMessage("Inappropriate value for delay. Error at \"" + tmp + "\" . Script aborted"); return; } QThread::msleep(ms); continue; } printErrorMessage("Inappropriate script. Error at \"" + tmp + "\" . Script aborted"); return; } file.close(); }
//--------------------------------------------------------------------------- string SetFunction::execute( string message, uint16 item ) throw( TelegramException ) { message = ""; string command = ""; stringstream stream; uint16 crc = item; // parse command stream << header(); stream << hexToString( message_len_, 4 ); stream << BaseTelegram::SEND_PACKAGE_ID; stream << hexToString( SET_FUNCTION, 4 ); stream << hexToString( sector_number_, 4 ); stream << hexToString( sector_function_, 4 ); stream << hexToString( sector_stop_, 4 ); stream << hexToString( flashflag_, 4 ); message = stream.str(); // calculate crc crc = 0; crc = createCrc( message ); stream << hexToString( crc, 4 ); message = ""; message = stream.str(); // set start and end trailer for command command = createTrailer( message ); return command; }
void MainWindow::sendMessage() { QString message = ui->send_text_lineEdit->displayText(); printSentMessage(message.trimmed()); if (ui->hex_radioButton->isChecked()) if (!hexToString(message)){ printErrorMessage("Messange can't be send"); return; }; port.sendData(message.trimmed() + "\r"); }
int record(char ** buffer) { pthread_t t; ThreadValues threadValues; int ret; long startTime; /* We open the pi serial port */ threadValues.p = SerialLib_open("/dev/ttyAMA0"); /* The serial port of the raspberry pi */ if(threadValues.p<0) { return -1; } threadValues.frame = newFrame(0x01,0,NULL); threadValues.status=1; /* Creation of the thread for the communication */ ret = pthread_create(&t, NULL,fn_process, &threadValues); startTime = time(NULL); if(!ret) { while(1) { if(0 == threadValues.status) { /* We extract the most relevent part of the string */ int lenght = threadValues.frame->lenght * 8; unsigned char * extraction = extract((unsigned char *)threadValues.frame->content, (int * )&lenght); if(NULL == extraction || 1 == lenght) { freeFrame(threadValues.frame); close(threadValues.p); return -1; } *buffer = hexToString(extraction,lenght); free(extraction); printf("'%s'\n",*buffer); fflush(stdout); //freeFrame(threadValues.frame); close(threadValues.p); return 0; } } pthread_cancel(t); freeFrame(threadValues.frame); close(threadValues.p); return -1; } freeFrame(threadValues.frame); close(threadValues.p); return -1; }
int main(int argc, char ** argv) { pthread_t t; ThreadValues threadValues; int ret; char * string; long startTime; /* We open the pi serial port */ threadValues.p = SerialLib_open("/dev/ttyAMA0"); /* The serial port of the raspberry pi */ if(threadValues.p<0) { return -1; } threadValues.frame = newFrame(0x01,0,NULL); threadValues.status=1; /* Creation of the thread for the communication */ ret = pthread_create(&t, NULL,fn_process, &threadValues); startTime = time(NULL); if(!ret) { while((time(NULL) - startTime) < 3) { if(0 == threadValues.status) { /* We extract the most relevent part of the string */ int lenght = threadValues.frame->lenght ; string = hexToString(threadValues.frame->content,lenght); printf("%s",string); free(string); freeFrame(threadValues.frame); close(threadValues.p); return 0; } } pthread_cancel(t); freeFrame(threadValues.frame); close(threadValues.p); return -1; } freeFrame(threadValues.frame); close(threadValues.p); return -1; }
int hello_server (FILE* log_server, char * ciphersuites_to_use, char * random_from_client, char * random_from_server){ /* for the moment we suppose the client can use all 4 types of protocol */ unsigned char * hexRandomClient; unsigned char * hexRandomServer = calloc(2*RANDOM_DIM_HELLO+1, sizeof(unsigned char)); FILE* channel = fopen(link_channel,"r"); char * received_message = calloc(BUF_SIZE+1,sizeof(char)); // Read data from channel read_channel (channel, received_message); fclose(channel); // Handle errors if(!strcmp(received_message,TLS_ERROR_OCCURRED)){ closeConversation(log_server); } // Save it in log_server send_message (log_server, 2, receiving, received_message); fprintf(log_server, "\n\n"); // Get the random from the client which is in position 4 hexRandomClient = (unsigned char *) get_nth_block(received_message, 4); // Convert from hex hexToString((char *) hexRandomClient, random_from_client); // Chose the best ciphersuite avilable get_block(received_message, 5, ciphersuites_to_use); // Generate Random part gen_rdm_bytestream(RANDOM_DIM_HELLO, random_from_server, hexRandomServer); // Send Hello Server to the Client channel = fopen(link_channel,"w"); send_message (channel, 5, TLS_VERSION, TLS_HANDSHAKE, TLS_SERVERHELLO, hexRandomServer, ciphersuites_to_use); // Save it in log_server send_message (log_server, 6, sending, TLS_VERSION, TLS_HANDSHAKE, TLS_SERVERHELLO, hexRandomServer, ciphersuites_to_use); fprintf(log_server, "\n\n"); fclose(channel); //free(hexRandomClient); free(hexRandomServer); free(received_message); return 1; }
extern bool ini_conf_save(p_conf conf) { dictionary *dict; FILE *fp; char buf[PATH_MAX]; int i; if (conf == NULL) { return false; } conf->confver = XREADER_VERSION_NUM; dict = dictionary_new(0); if (dict == NULL) return false; fp = fopen(conf_filename, "w"); if (fp == NULL) { return false; } if (iniparser_setstring(dict, "Global", NULL) != 0) goto error; if (iniparser_setstring(dict, "UI", NULL) != 0) goto error; if (iniparser_setstring(dict, "Text", NULL) != 0) goto error; if (iniparser_setstring(dict, "Image", NULL) != 0) goto error; if (iniparser_setstring(dict, "Music", NULL) != 0) goto error; iniparser_setstring(dict, "Global:path", conf->path); iniparser_setstring(dict, "UI:forecolor", hexToString(buf, sizeof(buf), conf->forecolor)); iniparser_setstring(dict, "Image:giftranscolor", hexToString(buf, sizeof(buf), conf->giftranscolor)); iniparser_setstring(dict, "UI:bgcolor", hexToString(buf, sizeof(buf), conf->bgcolor)); iniparser_setstring(dict, "UI:have_bg", booleanToString(buf, sizeof(buf), conf->have_bg)); iniparser_setstring(dict, "UI:titlecolor", hexToString(buf, sizeof(buf), conf->titlecolor)); iniparser_setstring(dict, "UI:menutextcolor", hexToString(buf, sizeof(buf), conf->menutextcolor)); iniparser_setstring(dict, "UI:menubcolor", hexToString(buf, sizeof(buf), conf->menubcolor)); iniparser_setstring(dict, "UI:selicolor", hexToString(buf, sizeof(buf), conf->selicolor)); iniparser_setstring(dict, "UI:selbcolor", hexToString(buf, sizeof(buf), conf->selbcolor)); iniparser_setstring(dict, "UI:msgbcolor", hexToString(buf, sizeof(buf), conf->msgbcolor)); iniparser_setstring(dict, "UI:usedyncolor", booleanToString(buf, sizeof(buf), conf->usedyncolor)); iniparser_setstring(dict, "Text:rowspace", dwordToString(buf, sizeof(buf), conf->rowspace)); iniparser_setstring(dict, "Text:infobar", infobarToString(buf, sizeof(buf), conf->infobar)); iniparser_setstring(dict, "Text:infobar_style", intToString(buf, sizeof(buf), conf->infobar_style)); iniparser_setstring(dict, "Text:rlastrow", booleanToString(buf, sizeof(buf), conf->rlastrow)); iniparser_setstring(dict, "Text:autobm", booleanToString(buf, sizeof(buf), conf->autobm)); iniparser_setstring(dict, "Text:vertread", vertreadToString(buf, sizeof(buf), conf->vertread)); iniparser_setstring(dict, "Text:encode", encodeToString(buf, sizeof(buf), conf->encode)); iniparser_setstring(dict, "Image:fit", fitToString(buf, sizeof(buf), conf->fit)); iniparser_setstring(dict, "Image:imginfobar", booleanToString(buf, sizeof(buf), conf->imginfobar)); iniparser_setstring(dict, "Text:scrollbar", booleanToString(buf, sizeof(buf), conf->scrollbar)); iniparser_setstring(dict, "Image:scale", dwordToString(buf, sizeof(buf), conf->scale)); iniparser_setstring(dict, "Image:rotate", rotateToString(buf, sizeof(buf), conf->rotate)); for (i = 0; i < 20; ++i) { char key[20]; SPRINTF_S(key, "Text:txtkey1_%02d", i); iniparser_setstring(dict, key, hexToString(buf, sizeof(buf), conf->txtkey[i])); SPRINTF_S(key, "Image:imgkey1_%02d", i); iniparser_setstring(dict, key, hexToString(buf, sizeof(buf), conf->imgkey[i])); } iniparser_setstring(dict, "Global:shortpath", conf->shortpath); iniparser_setstring(dict, "Global:confver", hexToString(buf, sizeof(buf), conf->confver)); iniparser_setstring(dict, "Image:bicubic", booleanToString(buf, sizeof(buf), conf->bicubic)); iniparser_setstring(dict, "Text:wordspace", dwordToString(buf, sizeof(buf), conf->wordspace)); iniparser_setstring(dict, "Text:borderspace", dwordToString(buf, sizeof(buf), conf->borderspace)); iniparser_setstring(dict, "Global:lastfile", conf->lastfile); iniparser_setstring(dict, "Music:mp3encode", encodeToString(buf, sizeof(buf), conf->mp3encode)); iniparser_setstring(dict, "Music:lyricencode", encodeToString(buf, sizeof(buf), conf->lyricencode)); iniparser_setstring(dict, "Music:mp3cycle", cycleToString(buf, sizeof(buf), conf->mp3cycle)); iniparser_setstring(dict, "Global:isreading", booleanToString(buf, sizeof(buf), conf->isreading)); iniparser_setstring(dict, "UI:bgarch", conf->bgarch); iniparser_setstring(dict, "UI:bgfile", conf->bgfile); iniparser_setstring(dict, "UI:bgwhere", intToString(buf, sizeof(buf), conf->bgwhere)); iniparser_setstring(dict, "Image:slideinterval", dwordToString(buf, sizeof(buf), conf->slideinterval)); iniparser_setstring(dict, "Music:hprmctrl", booleanToString(buf, sizeof(buf), conf->hprmctrl)); iniparser_setstring(dict, "UI:grayscale", intToString(buf, sizeof(buf), conf->grayscale)); iniparser_setstring(dict, "Global:showhidden", booleanToString(buf, sizeof(buf), conf->showhidden)); iniparser_setstring(dict, "Global:showunknown", booleanToString(buf, sizeof(buf), conf->showunknown)); iniparser_setstring(dict, "Global:showfinfo", booleanToString(buf, sizeof(buf), conf->showfinfo)); iniparser_setstring(dict, "Global:allowdelete", booleanToString(buf, sizeof(buf), conf->allowdelete)); iniparser_setstring(dict, "Global:arrange", arrangeToString(buf, sizeof(buf), conf->arrange)); iniparser_setstring(dict, "Global:enableusb", booleanToString(buf, sizeof(buf), conf->enableusb)); iniparser_setstring(dict, "Image:viewpos", viewposToString(buf, sizeof(buf), conf->viewpos)); iniparser_setstring(dict, "Image:imgmvspd", dwordToString(buf, sizeof(buf), conf->imgmvspd)); iniparser_setstring(dict, "Image:imgpaging", imgpagingToString(buf, sizeof(buf), conf->imgpaging)); iniparser_setstring(dict, "Image:imgpaging_spd", dwordToString(buf, sizeof(buf), conf->imgpaging_spd)); iniparser_setstring(dict, "Image:imgpaging_interval", dwordToString(buf, sizeof(buf), conf->imgpaging_interval)); iniparser_setstring(dict, "Image:imgpaging_duration", dwordToString(buf, sizeof(buf), conf->imgpaging_duration)); for (i = 0; i < 20; ++i) { char key[20]; SPRINTF_S(key, "Global:flkey1_%02d", i); iniparser_setstring(dict, key, hexToString(buf, sizeof(buf), conf->flkey[i])); } iniparser_setstring(dict, "UI:fontsize", intToString(buf, sizeof(buf), conf->fontsize)); iniparser_setstring(dict, "Text:reordertxt", booleanToString(buf, sizeof(buf), conf->reordertxt)); iniparser_setstring(dict, "Text:pagetonext", booleanToString(buf, sizeof(buf), conf->pagetonext)); iniparser_setstring(dict, "Text:autopage", intToString(buf, sizeof(buf), conf->autopage)); iniparser_setstring(dict, "Text:prev_autopage", intToString(buf, sizeof(buf), conf->prev_autopage)); iniparser_setstring(dict, "Text:autopagetype", intToString(buf, sizeof(buf), conf->autopagetype)); iniparser_setstring(dict, "Text:autolinedelay", intToString(buf, sizeof(buf), conf->autolinedelay)); iniparser_setstring(dict, "Image:thumb", thumbToString(buf, sizeof(buf), conf->thumb)); iniparser_setstring(dict, "Text:bookfontsize", intToString(buf, sizeof(buf), conf->bookfontsize)); iniparser_setstring(dict, "Text:enable_analog", booleanToString(buf, sizeof(buf), conf->enable_analog)); iniparser_setstring(dict, "Image:img_enable_analog", booleanToString(buf, sizeof(buf), conf->img_enable_analog)); for (i = 0; i < 20; ++i) { char key[20]; SPRINTF_S(key, "Text:txtkey2_%02d", i); iniparser_setstring(dict, key, hexToString(buf, sizeof(buf), conf->txtkey2[i])); SPRINTF_S(key, "Image:imgkey2_%02d", i); iniparser_setstring(dict, key, hexToString(buf, sizeof(buf), conf->imgkey2[i])); SPRINTF_S(key, "Global:flkey2_%02d", i); iniparser_setstring(dict, key, hexToString(buf, sizeof(buf), conf->flkey2[i])); } iniparser_setstring(dict, "Image:imgpagereserve", dwordToString(buf, sizeof(buf), conf->imgpagereserve)); iniparser_setstring(dict, "Music:lyricex", dwordToString(buf, sizeof(buf), conf->lyricex)); iniparser_setstring(dict, "Music:autoplay", booleanToString(buf, sizeof(buf), conf->autoplay)); iniparser_setstring(dict, "Text:usettf", booleanToString(buf, sizeof(buf), conf->usettf)); iniparser_setstring(dict, "Text:cttfarch", conf->cttfarch); iniparser_setstring(dict, "Text:cttfpath", conf->cttfpath); iniparser_setstring(dict, "Text:ettfarch", conf->ettfarch); iniparser_setstring(dict, "Text:ettfpath", conf->ettfpath); for (i = 0; i < 3; ++i) { char key[20]; SPRINTF_S(key, "Global:freqs_%d", i); iniparser_setstring(dict, key, intToString(buf, sizeof(buf), conf->freqs[i])); } iniparser_setstring(dict, "Image:imgbrightness", intToString(buf, sizeof(buf), conf->imgbrightness)); iniparser_setstring(dict, "Global:dis_scrsave", booleanToString(buf, sizeof(buf), conf->dis_scrsave)); iniparser_setstring(dict, "Global:autosleep", intToString(buf, sizeof(buf), conf->autosleep)); iniparser_setstring(dict, "Image:load_exif", booleanToString(buf, sizeof(buf), conf->load_exif)); iniparser_setstring(dict, "Global:launchtype", intToString(buf, sizeof(buf), conf->launchtype)); iniparser_setstring(dict, "Text:infobar_use_ttf_mode", booleanToString(buf, sizeof(buf), conf->infobar_use_ttf_mode)); iniparser_setstring(dict, "Text:infobar_fontsize", dwordToString(buf, sizeof(buf), conf->infobar_fontsize)); iniparser_setstring(dict, "Image:no_repeat", booleanToString(buf, sizeof(buf), conf->img_no_repeat)); iniparser_setstring(dict, "Global:hide_flash", booleanToString(buf, sizeof(buf), conf->hide_flash)); iniparser_setstring(dict, "Text:tabstop", dwordToString(buf, sizeof(buf), conf->tabstop)); iniparser_setstring(dict, "Music:apetagorder", booleanToString(buf, sizeof(buf), conf->apetagorder)); iniparser_setstring(dict, "UI:language", conf->language); iniparser_setstring(dict, "UI:filelistwidth", intToString(buf, sizeof(buf), conf->filelistwidth)); iniparser_setstring(dict, "Text:ttf_load_to_memory", booleanToString(buf, sizeof(buf), conf->ttf_load_to_memory)); iniparser_setstring(dict, "Global:save_password", booleanToString(buf, sizeof(buf), conf->save_password)); iniparser_setstring(dict, "Text:scrollbar_width", intToString(buf, sizeof(buf), conf->scrollbar_width)); iniparser_setstring(dict, "Text:hide_last_row", booleanToString(buf, sizeof(buf), conf->hide_last_row)); iniparser_setstring(dict, "Text:infobar_show_timer", booleanToString(buf, sizeof(buf), conf->infobar_show_timer)); iniparser_setstring(dict, "Text:englishtruncate", booleanToString(buf, sizeof(buf), conf->englishtruncate)); iniparser_setstring(dict, "Image:image_scroll_chgn_speed", booleanToString(buf, sizeof(buf), conf->image_scroll_chgn_speed)); iniparser_setstring(dict, "Text:ttf_haste_up", booleanToString(buf, sizeof(buf), conf->ttf_haste_up)); iniparser_setstring(dict, "Text:linenum_style", booleanToString(buf, sizeof(buf), conf->linenum_style)); iniparser_setstring(dict, "Text:infobar_align", alignToString(buf, sizeof(buf), conf->infobar_align)); iniparser_setstring(dict, "Music:musicdrv_opts", conf->musicdrv_opts); iniparser_setstring(dict, "Image:magnetic_scrolling", booleanToString(buf, sizeof(buf), conf->magnetic_scrolling)); iniparser_setstring(dict, "Image:use_image_queue", booleanToString(buf, sizeof(buf), conf->use_image_queue)); iniparser_setstring(dict, "Image:max_cache_img", dwordToString(buf, sizeof(buf), conf->max_cache_img)); iniparser_setstring(dict, "Music:show_encoder_msg", booleanToString(buf, sizeof(buf), conf->show_encoder_msg)); iniparser_dump_ini(dict, fp); fclose(fp); dictionary_del(dict); return true; error: if (fp != NULL) fclose(fp); return false; }
int main(int argc, char ** argv) { pthread_t t; ThreadValues threadValues; int ret; int try; char * string; long startTime; /* acquiring the semaphore */ while(!access(SEMAPHORE, F_OK)) { usleep(50000); } FILE *fp = fopen(SEMAPHORE, "ab+"); /* We open the pi serial port */ threadValues.p = SerialLib_open("/dev/ttyAMA0"); /* The serial port of the raspberry pi */ if(threadValues.p<0) { fclose(fp); unlink(SEMAPHORE); return -1; } threadValues.frame = newFrame(0x01,0,NULL); threadValues.status=1; /* Creation of the thread for the communication */ ret = pthread_create(&t, NULL,fn_process, &threadValues); startTime = time(NULL); if(!ret) { do { if(0 == threadValues.status) { /* We extract the most relevent part of the string */ unlink(SEMAPHORE); int lenght = threadValues.frame->lenght * 8; unsigned char * extraction = extractTrueFrame((unsigned char *)threadValues.frame->content, (int * )&lenght); if(NULL == extraction || 1 == lenght) { freeFrame(threadValues.frame); close(threadValues.p); fclose(fp); return -1; } string = hexToString(extraction,lenght); free(extraction); printf("%s",string); free(string); freeFrame(threadValues.frame); close(threadValues.p); fclose(fp); return 0; }while((time(NULL) - startTime) < 50); } pthread_cancel(t); freeFrame(threadValues.frame); close(threadValues.p); fclose(fp); unlink(SEMAPHORE); return -1; } freeFrame(threadValues.frame); close(threadValues.p); fclose(fp); unlink(SEMAPHORE); return -1; }
// THE MAIN char* main(int argc, char *argv[]) // param options: // decrypt some aes encrypted string: enc_string key // set a new flag d with id=a and token='b-.-c': a 'b-.-c' d // add a new fzn with value: fzn value { if (strcmp(argv[1], "-h") == 0) { // decryption not really needed but management want me to leave it... char* encrypted_flag = argv[2]; char* aeskey = argv[3]; char tmpstr[8096]; sprintf(tmpstr, "echo %s | openssl enc -d -aes-256-cbc -a -k %s", encrypted_flag, aeskey); FILE *fp; int status; char path[4096]; char content[4096]; fp = popen(tmpstr, "r"); if (fp == NULL) /* Handle error */; fgets(path, 4096, fp); sprintf(content, "%s", path); if (strlen(content) < 5) { printf("gcry_cipher_decrypt failed:"); } else { printf("%s\n", content); } // dec: echo U2FsdGVkX18eaVlEUPTR47GFaEoh3u9DMHgqvtZS1Ko= | openssl enc -d -aes-256-cbc -a -k mykey } else if (strcmp(argv[1], "-h") == 0) { // decryption not really needed but management want me to leave it... char* encrypted_flag = argv[2]; char* aes_key = argv[3]; //printf("encrypted_flag: %s (%i)\n", encrypted_flag, (int)(strlen(encrypted_flag))); char* ascii_flag = hexToString(encrypted_flag); //printf("ascii_flag: %s (%i)\n", ascii_flag, (int)(strlen(ascii_flag))); decryptString2(ascii_flag, aes_key); //printf("passing ascii_flag: %s (%i)\n", ascii_flag, (int)(strlen(ascii_flag))); remPad(ascii_flag, strlen(ascii_flag)); //printf("%s\n", ascii_flag); //printf("ascii_flag: %s (%i)\n", ascii_flag, (int)(strlen(ascii_flag))); printf("%s\n", ascii_flag); return ascii_flag; // is decryped } else if (argc == 4) { char* flag_id = argv[1]; // FahrzeugnummerBeginnWortBeginn char* password = argv[2]; // ( komplette Fahrzeugnummer-.-komplettes Wort ) char* content_arg = argv[3]; // the flag itself char content[4096]; strcpy(content, content_arg); char delimiter[] = "-.-"; char *ptr; ptr = strtok(password, delimiter); char* fzn = ptr; ptr = strtok(NULL, delimiter); char* bayWord = ptr; char* aeskey = randstring(16); printf("%s\n", aeskey); char hex_content[4096]; char tmpstr[8096]; sprintf(tmpstr, "echo %s | openssl enc -e -aes-256-cbc -a -k %s", argv[3], aeskey); FILE *fp; int status; char path[4096]; fp = popen(tmpstr, "r"); if (fp == NULL) /* Handle error */; fgets(path, 4096, fp); sprintf(hex_content, "%s", path); // dec: echo U2FsdGVkX18eaVlEUPTR47GFaEoh3u9DMHgqvtZS1Ko= | openssl enc -d -aes-256-cbc -a -k mykey // printf("hex: ||%s||", hex_content); // printf("aes: ||%s||", aeskey); // printf("-----------"); printf("fzn: %s\n", fzn); printf("bayWord: %s\n", bayWord); printf("encrypted: %s\n", hex_content); printf("aeskey: %s\n", aeskey); // ADD TO FILES addFznAndEncContentToFznCsv(fzn, hex_content); // printf("Alles3: ||%s|| ; ||%s|| ; ||%s|| ; ||%s|| ; ||%s||\n", bayWord, aeskey, fzn, hex_content, aeskey); addBayWordAndKeyToBayCsv(bayWord, aeskey); // printf("Alles4: ||%s|| ; ||%s|| ; ||%s|| ; ./setflag -h %s %s\n", bayWord, aeskey, fzn, hex_content, aeskey); } else if (argc == 4) { // for managers only!!11 int done = 0; int tries = 0; char* flag_id = argv[1]; // FahrzeugnummerBeginnWortBeginn char* password = argv[2]; // ( komplette Fahrzeugnummer-.-komplettes Wort ) char* content_arg = argv[3]; // the flag itself char content[4096]; strcpy(content, content_arg); printf("content_arg: %s (%i)\n", content_arg, (int)(strlen(content_arg))); printf("Alles::content: %s (%i)\n", content, (int)(strlen(content))); printf("content1: %s\n", content); char delimiter[] = "-.-"; char *ptr; ptr = strtok(password, delimiter); char* fzn = ptr; printf("fzn: %s\n", fzn); ptr = strtok(NULL, delimiter); char* bayWord = ptr; printf("Alles::bayWord: %s\n", bayWord); char aeskey[1024]; char hex_content[4096]; while (done == 0) { // some weird workaround... tries++; strcpy(content, content_arg); printf("Alles0: || %i ||%s (%i)|| ; ||%s(%i)|| ; ||%s(%i)|| ; ||%s(%i)|| ; ||%s(%i)||\n", tries, bayWord, (int)(strlen(bayWord)), aeskey,(int)(strlen(aeskey)), fzn, (int)(strlen(fzn)), hex_content, (int)(strlen(hex_content)), content, (int)(strlen(content))); // char* aeskey = randstring(16); strcpy(aeskey, randstring(16)); printf("aeskey: ||%s||\n", aeskey); printf("passing content: %s (%i)\n", content, (int)(strlen(content))); addPad(content, sizeof(content)); printf("AllesX: || %i ||%s (%i)|| ; ||%s(%i)|| ; ||%s(%i)|| ; ||%s(%i)||; ||%s(%i)||\n", tries, bayWord, (int)(strlen(bayWord)), aeskey,(int)(strlen(aeskey)), fzn, (int)(strlen(fzn)), hex_content, (int)(strlen(hex_content)), content, (int)(strlen(content))); printf("after addpad: %s (%i)\n", content, (int)(strlen(content))); int index = 0; printf("AllesS: "); for (index = 0; index<strlen(content)+1; index++) { printf("%02X", (unsigned char)content[index]); } printf("\n"); encryptString2(content, aeskey); printf("AllesY: || %i ||%s (%i)|| ; ||%s(%i)|| ; ||%s(%i)|| ; ||%s(%i)||; ||%s(%i)||\n", tries, bayWord, (int)(strlen(bayWord)), aeskey,(int)(strlen(aeskey)), fzn, (int)(strlen(fzn)), hex_content, (int)(strlen(hex_content)), content, (int)(strlen(content))); printf("after enc: %s (%i)\n", content, (int)(strlen(content))); if (strlen(content) < 32) { printf("strlen %i\n", (int)(strlen(content))); int rofl = 0; printf("As s: ||"); for (rofl = 0; rofl < 32; rofl++) { printf("%c", content[rofl]); } printf("||\nAs x02: ||"); for (rofl = 0; rofl < 32; rofl = rofl+2) { printf("%02X", content[rofl]); } printf("||\n"); } printAsHex(content); // char* hex_content = stringToHex(content); strcpy(hex_content, stringToHex(content)); printf("after hex: %s (%i)\n", content, (int)(sizeof(content))); printf("Alles1: || %i ||%s (%i)|| ; ||%s(%i)|| ; ||%s(%i)|| ; ||%s(%i)||; ||%s(%i)||\n", tries, bayWord, (int)(strlen(bayWord)), aeskey,(int)(strlen(aeskey)), fzn, (int)(strlen(fzn)), hex_content, (int)(strlen(hex_content)), content, (int)(strlen(content))); if ((( strlen(hex_content) > 0 && strlen(content) > 0 && (strlen(hex_content) % 16) == 0 && (strlen(content) % 16) == 0) ) || tries > 4 ) { done = 1; printf("Alles2: || %i ||%s|| ; ||%s|| ; ||%s|| ; ||%s|| ; ||%s||\n", tries, bayWord, aeskey, fzn, hex_content, aeskey); addFznAndEncContentToFznCsv(fzn, hex_content); printf("Alles3: || %i ||%s|| ; ||%s|| ; ||%s|| ; ||%s|| ; ||%s||\n", tries, bayWord, aeskey, fzn, hex_content, aeskey); addBayWordAndKeyToBayCsv(bayWord, aeskey); printf("Alles4: || %i ||%s|| ; ||%s|| ; ||%s|| ; ./setflag -h %s %s\n", tries, bayWord, aeskey, fzn, hex_content, aeskey); } // char tmpstr[8096]; // sprintf(tmpstr, "echo 'tries: %i || done: %i || strlen content: (%i) || hex_content: %s (%i) || content_arg: %s (%i) || ' >> setflaglog.log", tries, done, (int)(strlen(content)), hex_content, (int)(strlen(hex_content)), content_arg, (int)(strlen(content_arg))); // popen(tmpstr, "r"); } } else { // official functionality char* fzn = argv[1]; char* value = argv[2]; if (fzn != NULL && value != NULL) { addFznAndEncContentToFznCsv(fzn, value); printf("FZN ADDED\n"); } else { printf("you have to provide fzn and value\n"); } } }