コード例 #1
0
ファイル: barcodez.c プロジェクト: 4v4t4r/BroCTF
int barcodez(int socket) {
  char tehfile[41];
  char safe[] = IMG_ROOT;
  char cobracmdr[sizeof(tehfile)+sizeof(safe)+9];
  char data[600];
  char safepath[sizeof(safe)+sizeof(tehfile)];
  int res = 0;

  memset(tehfile, 0x0, sizeof(tehfile));
  memset(cobracmdr, 0x0, sizeof(cobracmdr));
  memset(data, 0x0, sizeof(data));
  memset(safepath, 0x0, sizeof(safepath));

  sendString(socket, "Welcome to the data matrix bar code reader.\n");
  sendString(socket, "Enter the name of file uploaded to decode data.\n> ");

  if ((res = recvUntil(socket, tehfile, sizeof(tehfile) - 1, '\n')) == 0) {
    fprintf(stderr, "No datas!\n");
    close(socket);
    exit(1);
  }

  snprintf(safepath, sizeof(safepath), "%s%s", safe, tehfile);

  if ((res = validPath(safe, safepath)) == -1) {
    sendString(socket, "Hey! You can't look in there.\n");
    fprintf(stderr, "%s is outside the safe path.\n", safepath);
    close(socket);
    exit(1);
  }

  snprintf(cobracmdr, sizeof(cobracmdr), "dmtxread %s", safepath);

  if ((fp = popen(cobracmdr, "r")) == NULL) {
    perror("popen");
    close(socket);
    exit(1);
  }

  fread(data, SIZE, 1, fp);

  if (data[0] == 0x0) {
    sendString(socket, "Looks like you lost your file!\n");
    fprintf(stderr, "Nothing read!\n");
    close(socket);
    exit(1);
  }

  sendString(socket, data);

  fclose(fp);
  unlink(safepath);
  close(socket);
  return 0;
}
コード例 #2
0
void CNetPlayerInput::UpdateErrorSnap(const Vec3 &entPos, const Vec3 &desiredPos, f32 netPosDist, const Vec3 &desPosOffset, const CTimeValue &curTime)
{
	if (g_pGameCVars->pl_velocityInterpAlwaysSnap)
	{
		//--- Snap to target
		m_pPlayer->GetEntity()->SetPos(desiredPos);
		m_passedNetPos = true;
		m_passedPredictionPos = true;
	}
	else if (curTime > m_nextBCTime && !(m_pPlayer->m_stats.inFreefall.Value() > 0))
	{
		//--- Breadcrumbs dropped for simulated annealing, whilst the player is blocked we reduce the maximum
		//--- allowed offset until the character is snapped to the last net position
		Vec3 prevOffset = entPos - m_breadCrumb;
		bool blocked = false;
		if (!m_passedNetPos)
		{
			float moveDist = prevOffset.Dot(desPosOffset) / netPosDist;
			float moveSpeed  = moveDist / k_timePerBC;
			blocked = ((moveSpeed / m_netLerpSpeed) <= k_BCMovingRatio);
		}
		if (blocked)
		{
			m_blockedTime += k_timePerBC;
		}
		else
		{
			m_blockedTime = 0.0f;
		}

		m_breadCrumb = entPos;
		m_nextBCTime = curTime+k_timePerBC;

		Vec3 v0(desiredPos.x, desiredPos.y, 0.0f);
		Vec3 v1(m_predictedPosition.x, m_predictedPosition.y, 0.0f);
		Vec3 pt(entPos.x, entPos.y, 0.0f);
		Lineseg validPath(v0, v1);
		float t;
		float distSqrXY = Distance::Point_LinesegSq(pt, validPath, t);

		float heightDiff = m_predictedPosition.z - entPos.z;
		float blockedFactor = (1.0f - (m_blockedTime / k_maxBlockTime));
		float maxDistXY = !m_passedNetPos ? blockedFactor * k_maxInterpolateDist : k_reachedTargetAllowedDeviation;
		float timeOnGround = m_pPlayer->GetActorStats()->onGround;
		float allowedHeightDiff = (float)__fsel(timeOnGround - k_onGroundTime, k_allowedHeightDiff, k_allowedHeightDiffInAir);
		if ((distSqrXY > (maxDistXY * maxDistXY)) || (cry_fabsf(heightDiff) > allowedHeightDiff))
		{
			//--- Snap to target
			m_pPlayer->GetEntity()->SetPos(desiredPos);
			m_passedNetPos = true;
			const bool isfallen = m_pPlayer->m_stats.inFreefall.Value()==1;
		}
	}
}
コード例 #3
0
void testPaths(FILE* out, struct Map* map, int pathLength, int numPaths, int* paths)
{
  int i, result;
  fprintf(out, "Test length %d paths\n", pathLength);

  for(i = 0; i < numPaths; ++i)
  {
    result = validPath(pathLength, paths + i*pathLength, map);
    fprintf(out, "  Path %d, result = %d\n", i, result);
  }
}
コード例 #4
0
//----------------------------------------------------------------------
void AIController::handleScoutOrders( Agent* scout, ArenaMap& currentMap, const ObservedEntities& entities, Orders& tentativeOrders )
{
	if( scout->currentPath.empty() )
	{
		scout->currentTargetLoc = currentMap.getLocationForScoutToGoTo();
		m_agentsRequestingPaths.push( scout->entityID );
	}
	else
	{
		if( currentMap.hasNewMapInfo()  && !validPath( currentMap, scout->pos, scout->currentPath ) )
		{
			if( scout->pos == scout->currentTargetLoc || currentMap.getMapTileType( scout->currentTargetLoc.x, scout->currentTargetLoc.y ) == ARENA_SQUARE_TYPE_STONE )
				scout->currentTargetLoc = currentMap.getLocationForScoutToGoTo();
			m_agentsRequestingPaths.push( scout->entityID );
		}
	}
}
コード例 #5
0
//----------------------------------------------------------------------
void AIController::handleSoldierOrders( Agent* soldier, ArenaMap& currentMap, const ObservedEntities& entities, Orders& tentativeOrders )
{
	if( soldier->currentPath.empty() )
	{
		soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo();
		switch( m_currentQueenState )
		{
		case GATHER_RESOURCES:
		case DEFEND:
		case ATTACK:
			if( !getEntityIDForClosestEnemyQueen( soldier->pos, entities, soldier->currentEnemyTargetID ) )
				soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo();
			break;
		}
		m_agentsRequestingPaths.push( soldier->entityID );
	}
	else if( m_currentQueenState == ATTACK && soldier->currentEnemyTargetID == -1 )
	{
		if( !getEntityIDForClosestEnemyQueen( soldier->pos, entities, soldier->currentEnemyTargetID ) )
		{
			if( soldier->currentTargetLoc == soldier->pos )
			{
				soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo();
				m_agentsRequestingPaths.push( soldier->entityID );
			}
		}
		else
			m_agentsRequestingPaths.push( soldier->entityID );
	}
	else
	{
		if( currentMap.hasNewMapInfo()  && !validPath( currentMap, soldier->pos, soldier->currentPath ) )
		{
			if( soldier->pos == soldier->currentTargetLoc || currentMap.getMapTileType( soldier->currentTargetLoc.x, soldier->currentTargetLoc.y ) == ARENA_SQUARE_TYPE_STONE )
				soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo();
			m_agentsRequestingPaths.push( soldier->entityID );
		}
	}
}
コード例 #6
0
//----------------------------------------------------------------------
void AIController::handleWorkerOrders( Agent* worker, ArenaMap& currentMap, const ObservedEntities& entities, Orders& tentativeOrders )
{
	if( m_currentQueenState == ATTACK && currentMap.hasNoMoreResources() && worker->specialStatus != ENTITY_SPECIAL_STATUS_CARRYING_FOOD )
	{
		tentativeOrders.AddOrder( worker->entityID, ORDER_SUICIDE );
	}
	else
	{
		if( worker->currentPath.empty() && !worker->waitingForPath )
		{
			if( worker->pos == m_queen->pos && worker->specialStatus == ENTITY_SPECIAL_STATUS_CARRYING_FOOD )
			{
				tentativeOrders.AddOrder( worker->entityID, ORDER_DROP_FOOD, true );
				--m_numWorkersWithFood;
				worker->currentTargetAgentID = -1;
			}
			else if( worker->pos == worker->currentTargetLoc && currentMap.getMapTileType( worker->pos.x, worker->pos.y ) == ARENA_SQUARE_TYPE_FOOD )
			{
				tentativeOrders.AddOrder( worker->entityID, ORDER_TAKE_FOOD, true );
				m_agentsRequestingPaths.push( worker->entityID );
				worker->currentTargetLoc = m_queen->pos;
				worker->currentTargetAgentID = m_queen->entityID;
				worker->waitingForPath = true;
				currentMap.getMapTile( worker->pos.x, worker->pos.y ).isClaimed = false;
			}	
			else if( worker->specialStatus != ENTITY_SPECIAL_STATUS_CARRYING_FOOD )
			{
				int x, y;
				if( currentMap.getClosestNutrient( m_arenaInfo.visibilityRangeQueen*QUEEN_RANGE_FACTOR, m_queen->pos, x, y ) )
				{
					m_agentsRequestingPaths.push( worker->entityID );
					worker->currentTargetLoc = TileCoords( x, y );
					worker->currentTargetAgentID = -1;
					worker->waitingForPath = true;
					currentMap.getMapTile( x, y ).isClaimed = true;
				}
				else
				{
					++m_numWorkersThatCouldntFindFoodThisFrame;
					if( m_numWorkersThatCouldntFindFoodThisFrame >= NUM_WORKERS_IDLE_BEFORE_QUEEN_MOVES )
					{
						worker->currentTargetAgentID = m_queen->entityID;
					}
					else
					{
						worker->currentTargetAgentID = -1;
						worker->currentTargetLoc = currentMap.getRandomLocationInArea( worker->pos, m_arenaInfo.visibilityRangeQueen*QUEEN_RANGE_FACTOR );
					}
					m_agentsRequestingPaths.push( worker->entityID );
					worker->waitingForPath = true;
				}
			}
			else
			{
				worker->currentTargetAgentID =  m_queen->entityID;
				m_agentsRequestingPaths.push( worker->entityID );
				worker->waitingForPath = true;
			}
		}
		else if( currentMap.getMapTileType( worker->currentTargetLoc.x, worker->currentTargetLoc.y ) != ARENA_SQUARE_TYPE_FOOD && worker->specialStatus != ENTITY_SPECIAL_STATUS_CARRYING_FOOD )
		{
			int x, y;
			if( currentMap.getClosestNutrient( m_arenaInfo.visibilityRangeQueen*QUEEN_RANGE_FACTOR, m_queen->pos, x, y ) )
			{
				m_agentsRequestingPaths.push( worker->entityID );
				worker->currentTargetLoc = TileCoords( x, y );
				worker->currentTargetAgentID = -1;
				worker->waitingForPath = true;
				currentMap.getMapTile( x, y ).isClaimed = true;
			}
		}
		else if( currentMap.hasNewMapInfo() && !worker->waitingForPath && !validPath( currentMap, worker->pos, worker->currentPath ) )
		{
			m_agentsRequestingPaths.push( worker->entityID );
			worker->waitingForPath = true;
		}
	}
}
コード例 #7
0
QStringList VideoConverter::getCommandLine()
{
	QStringList parameters;
	QString extension;

	parameters << "-i" << validPath(videoItem->getVideoFile());

	switch (convConfToUse.outputFormat)
	{
		case ofAVI:
			parameters << "-f" << "avi" << "-vcodec" << "mpeg4";
			extension = ".avi";
			break;
		case ofWMV:
			extension = ".wmv";
			break;
		case ofMPEG1:
			parameters << "-vcodec" << "mpeg1video";
			extension = ".mpg";
			break;
		case ofMPEG2:
			parameters << "-vcodec" << "mpeg2video";
			extension = ".mpeg";
			break;
		case ofMP4:
		case ofMP4_hd:
		{
			QString vpre = convConfToUse.outputFormat == ofMP4 ? "default" : "hq";
			// configure h264 codec
#ifndef Q_OS_LINUX
	#ifdef Q_OS_WIN32
			bool use_x264 = true;
	#else
			bool use_x264 = isRunningOn64bits();
	#endif
			if (use_x264)
				parameters	<< "-vcodec" << "libx264"
							<< "-fpre" << QFileInfo(ffmpegApp).absolutePath() + "/ffmpeg-presets/libx264-" + vpre + ".ffpreset";
			else // no x264 support
				parameters << "-f" << "mp4" << "-vcodec" << "mpeg4";
	#else
			parameters << "-vcodec" << "libx264" << "-vpre" << vpre;
#endif
			extension = ".mp4";
			break;
		}
		case ofAppleiPod:
			parameters	<< "-acodec" << "libfaac" << "-ab" << "128kb" << "-vcodec" << "mpeg4" << "-b" << "1200kb"
						<< "-mbd" << "2" << "-cmp" << "2" << "-subcmp" << "2" << "-s" << "320x240";
			extension = ".mp4";
			break;
		case ofSonyPSP:
			parameters << "-acodec" << "libfaac" << "-ab" << "128kb" <<  "-vcodec" << "mpeg4" << "-b" << "1200kb"
					   << "-mbd" << "2" << "-flags" << "+4mv" << "-trellis" << "2" << "-cmp" << "2" << "-subcmp" << "2"
					   << "-r" << "30000/1001" << "-f" << "psp";
			extension = ".mp4";
			break;
		case of3GP:
			parameters << "-vcodec" << "mpeg4" << "-acodec" << "libfaac" << "-ar" << "8000" << "-ac" << "1"
					   << "-ab" << "12.2k" << "-f" << "3gp";
			extension = ".3gp";
			break;
		case ofMP3:
			extension = ".mp3";
			break;
	}

	// this is used only for NON Apple iPod videos
	if (convConfToUse.outputFormat != ofAppleiPod)
	{
		switch (convConfToUse.videoResolution)
		{
			case vrOriginal:
				break;
			case vr96x72:
				parameters << "-s" << "96x72";
				break;
			case vr128x96:
				parameters << "-s" << "128x96";
				break;
			case vr160x120:
				parameters << "-s" << "160x120";
				break;
			case vr176x120:
				parameters << "-s" << "176x120";
				break;
			case vr176x144:
				parameters << "-s" << "176x144";
				break;
			case vr192x144:
				parameters << "-s" << "192x144";
				break;
			case vr240x180:
				parameters << "-s" << "240x180";
				break;
			case vr320x200:
				parameters << "-s" << "320x200";
				break;
			case vr320x240:
				parameters << "-s" << "320x240";
				break;
			case vr352x240:
				parameters << "-s" << "352x240";
				break;
			case vr352x288:
				parameters << "-s" << "352x288";
				break;
			case vr480x272:
				parameters << "-s" << "480x272";
				break;
			case vr480x360:
				parameters << "-s" << "480x360";
				break;
			case vr480x480:
				parameters << "-s" << "480x480";
				break;
			case vr624x352:
				parameters << "-s" << "624x352";
				break;
			case vr640x480:
				parameters << "-s" << "640x480";
				break;
			case vr720x480:
				parameters << "-s" << "720x480";
				break;
			case vr720x576:
				parameters << "-s" << "720x576";
				break;
		}

		if (convConfToUse.videoFrameRate == vfr15)
			parameters << "-r" << "15";
		else if (convConfToUse.videoFrameRate == vfr24)
			parameters << "-r" << "24";
		else if (convConfToUse.videoFrameRate == vfr25)
			parameters << "-r" << "25";
		else if (convConfToUse.videoFrameRate == vfr29_97)
			parameters << "-r" << "29.97";
		else if (convConfToUse.videoFrameRate == vfr30)
			parameters << "-r" << "30";

		switch (convConfToUse.audioSampleRatio)
		{
			case asrOriginal:
				break;
			case asr22050:
				parameters << "-ar" << "22050";
				break;
			case asr44100:
				parameters << "-ar" << "44100";
				break;
		}

		switch (convConfToUse.outputQuality)
		{
			case oqLower_quality:
				parameters << "-b" << "384k" << "-ab" << "64k";
				break;
			case oqLow_quality:
				parameters << "-b" << "512k" << "-ab" << "80k";
				break;
			case oqNormal_quality:
				parameters << "-b" << "640k" << "-ab" << "96k";
				break;
			case oqMedium_quality:
				parameters << "-b" << "800k" << "-ab" << "96k";
				break;
			case oqGood_quality:
				parameters << "-b" << "1000k" << "-ab" << "128k";
				break;
			case oqSuperb_quality:
				parameters << "-b" << "1200k" << "-ab" << "128k";
				break;
			case oqSame_quality:
				break;
		}
	}

	videoItem->setVideoFileSavedTo(uniqueFileName(changeFileExt(videoItem->getVideoFile(), extension)), this);

	parameters << "-y" << validPath(videoItem->getVideoFileSavedTo());

	return parameters;
}