static BOOLEAN DoConvSummary (SUMMARY_STATE *pSS) { #define DELTA_Y_SUMMARY RES_SCALE(8) // JMS_GFX //#define MAX_SUMM_ROWS ((SIS_SCREEN_HEIGHT - SLIDER_Y - SLIDER_HEIGHT) / DELTA_Y_SUMMARY #define MAX_SUMM_ROWS (SLIDER_Y / DELTA_Y_SUMMARY) - 1 // JMS_GFX if (!pSS->Initialized) { pSS->PrintNext = TRUE; pSS->NextSub = GetFirstTrackSubtitle (); pSS->LeftOver = NULL; pSS->InputFunc = DoConvSummary; pSS->Initialized = TRUE; DoInput (pSS, FALSE); } else if (GLOBAL (CurrentActivity) & CHECK_ABORT) { return FALSE; // bail out } else if (PulsedInputState.menu[KEY_MENU_SELECT] || PulsedInputState.menu[KEY_MENU_CANCEL] || PulsedInputState.menu[KEY_MENU_RIGHT]) { if (pSS->NextSub) { // we want the next page pSS->PrintNext = TRUE; } else { // no more, we are done return FALSE; } } else if (pSS->PrintNext) { // print the next page RECT r; TEXT t; int row; r.corner.x = 0; r.corner.y = 0; r.extent.width = SIS_SCREEN_WIDTH; r.extent.height = SLIDER_Y; //SIS_SCREEN_HEIGHT - SLIDER_Y - SLIDER_HEIGHT + RES_SCALE(2) + 16 * RESOLUTION_FACTOR; // JMS_GFX SetContext (AnimContext); SetContextForeGroundColor (COMM_HISTORY_BACKGROUND_COLOR); DrawFilledRectangle (&r); SetContextForeGroundColor (COMM_HISTORY_TEXT_COLOR); r.extent.width -= 2 + 2; t.baseline.x = RES_SCALE(2); // JMS_GFX t.align = ALIGN_LEFT; t.baseline.y = DELTA_Y_SUMMARY; SetContextFont (TinyFont); for (row = 0; row < MAX_SUMM_ROWS && pSS->NextSub; ++row, pSS->NextSub = GetNextTrackSubtitle (pSS->NextSub)) { const char *next = NULL; if (pSS->LeftOver) { // some text left from last subtitle t.pStr = pSS->LeftOver; pSS->LeftOver = NULL; } else { t.pStr = GetTrackSubtitleText (pSS->NextSub); if (!t.pStr) continue; } t.CharCount = (COUNT)~0; for ( ; row < MAX_SUMM_ROWS && !getLineWithinWidth (&t, &next, r.extent.width, (COUNT)~0); ++row) { if (CommData.AlienConv == ORZ_CONVERSATION) { // MB: nasty hack: remove '$'s from conversation for Orz UNICODE my_copy[128]; strcpy(my_copy, t.pStr); remove_char_from_string(my_copy, '$'); t.pStr = my_copy; font_DrawText(&t); } else { // Normal mode font_DrawText(&t); } t.baseline.y += DELTA_Y_SUMMARY; t.pStr = next; t.CharCount = (COUNT)~0; } if (row >= MAX_SUMM_ROWS) { // no more space on screen, but some text left over // from the current subtitle pSS->LeftOver = next; break; } // this subtitle fit completely if (CommData.AlienConv == ORZ_CONVERSATION) { // MB: nasty hack: remove '$'s from conversation for Orz UNICODE my_copy[128]; strcpy(my_copy, t.pStr); remove_char_from_string(my_copy, '$'); t.pStr = my_copy; font_DrawText(&t); } else { // Normal mode font_DrawText(&t); } t.baseline.y += DELTA_Y_SUMMARY; } if (row >= MAX_SUMM_ROWS && (pSS->NextSub || pSS->LeftOver)) { // draw *MORE* TEXT mt; UNICODE buffer[128]; mt.baseline.x = SIS_SCREEN_WIDTH >> 1; mt.baseline.y = t.baseline.y; mt.align = ALIGN_CENTER; snprintf (buffer, sizeof (buffer), "%s%s%s", // "MORE" STR_MIDDLE_DOT, GAME_STRING (FEEDBACK_STRING_BASE + 1), STR_MIDDLE_DOT); if (CommData.AlienConv == ORZ_CONVERSATION) { // MB: nasty hack: remove '$'s from conversation for Orz remove_char_from_string(buffer, '$'); } mt.pStr = buffer; SetContextForeGroundColor (COMM_MORE_TEXT_COLOR); font_DrawText (&mt); }
int raopcl_connect(raopcl_t *p, char *host,u_int16_t destport) { u_int8_t buf[4+8+16]; char sid[16]; char sci[24]; char *sac=NULL,*key=NULL,*iv=NULL; char sdp[1024]; int rval=-1; key_data_t *setup_kd=NULL; char *aj, *token, *pc; const char delimiters[] = ";"; u_int8_t rsakey[512]; int i; raopcl_data_t *raopcld; if(!p) return -1; raopcld=(raopcl_data_t *)p; RAND_bytes(buf, sizeof(buf)); sprintf(sid, "%d", *((u_int32_t*)buf)); sprintf(sci, "%08x%08x",*((u_int32_t*)(buf+4)),*((u_int32_t*)(buf+8))); base64_encode(buf+12,16,&sac); if(!(raopcld->rtspcl=rtspcl_open())) goto erexit; if(rtspcl_set_useragent(raopcld->rtspcl,"iTunes/4.6 (Macintosh; U; PPC Mac OS X 10.3)")) goto erexit; if(rtspcl_add_exthds(raopcld->rtspcl,"Client-Instance", sci)) goto erexit; if(rtspcl_connect(raopcld->rtspcl, host, destport, sid)) goto erexit; i=rsa_encrypt(raopcld->key,16,rsakey); base64_encode(rsakey,i,&key); remove_char_from_string(key,'='); base64_encode(raopcld->iv,16,&iv); remove_char_from_string(iv,'='); sprintf(sdp, "v=0\r\n" "o=iTunes %s 0 IN IP4 %s\r\n" "s=iTunes\r\n" "c=IN IP4 %s\r\n" "t=0 0\r\n" "m=audio 0 RTP/AVP 96\r\n" "a=rtpmap:96 AppleLossless\r\n" "a=fmtp:96 4096 0 16 40 10 14 2 255 0 0 44100\r\n" "a=rsaaeskey:%s\r\n" "a=aesiv:%s\r\n", sid, rtspcl_local_ip(raopcld->rtspcl), host, key, iv); remove_char_from_string(sac,'='); if(rtspcl_add_exthds(raopcld->rtspcl, "Apple-Challenge", sac)) goto erexit; if(rtspcl_annouce_sdp(raopcld->rtspcl, sdp)) goto erexit; if(rtspcl_mark_del_exthds(raopcld->rtspcl, "Apple-Challenge")) goto erexit; if(rtspcl_setup(raopcld->rtspcl, &setup_kd)) goto erexit; if(!(aj=kd_lookup(setup_kd,"Audio-Jack-Status"))) { ERRMSG("%s: Audio-Jack-Status is missing\n",__func__); goto erexit; } token=strtok(aj,delimiters); while(token){ if((pc=strstr(token,"="))){ *pc=0; if(!strcmp(token,"type") && !strcmp(pc+1,"digital")){ raopcld->ajtype=JACK_TYPE_DIGITAL; } }else{ if(!strcmp(token,"connected")){ raopcld->ajstatus=JACK_STATUS_CONNECTED; } } token=strtok(NULL,delimiters); } if(rtspcl_record(raopcld->rtspcl)) goto erexit; // keep host address and port information if(realloc_memory((void**)&raopcld->addr,strlen(host)+1,__func__)) goto erexit; strcpy(raopcld->addr,host); raopcld->rtsp_port=destport; if(raopcl_stream_connect(raopcld)) goto erexit; rval=0; erexit: if(sac) free(sac); if(key) free(key); if(iv) free(iv); free_kd(setup_kd); return rval; }
int main(int argc, char **argv) { char cmd[1000]; FILE * fp; FILE * sigDb; char * fileName = NULL; char * sigPattern = NULL; size_t len = 0; size_t sigLen = 0; ssize_t readFile; ssize_t readSig; uint8_t *fileBuf; uint8_t *sigBuf; size_t sizeFb; uint8_t *found; int count=0; strcpy(cmd, "find "); strcat(cmd, MOUNT); strcat(cmd, " -type f > filesToScan.txt"); system(cmd); fp = fopen("filesToScan.txt", "r"); if (fp == NULL) exit(EXIT_FAILURE); //sigDb = fopen("mainCPUsig.ndb","r"); timestamp_type time1, time2; get_timestamp(&time1); while ((readFile = getline(&fileName, &len, fp)) != -1) { printf("scaning: %s", fileName); remove_char_from_string('\n',fileName); loadFile(fileName, &fileBuf, &sizeFb); sigDb = fopen("mainCPUsig5k.ndb","r"); while ((readSig = getline(&sigPattern, &sigLen, sigDb)) != -1){ remove_char_from_string('\n',sigPattern); sigLen = strlen(sigPattern)/2; hex2data(&sigBuf, sigPattern); found = boyer_moore(fileBuf,sizeFb, sigBuf, sigLen); if(found != NULL){ printf(" found virus in %s\n", fileName); count++; } free(sigBuf); } fclose(sigDb); printf("\n"); free(fileBuf); } fclose(fp); get_timestamp(&time2); double elapsed = timestamp_diff_in_seconds(time1,time2); printf("%f s\n", elapsed); printf("virus count: %d\n", count); //loadFile(argv[1], &fileBuf, &sizeFb); }