Exemplo n.º 1
0
static inline void AddHexChar(char *csBuf, unsigned long & ulOffset, bool bAddSpace, unsigned char uc)
{
    csBuf[ulOffset++] = ToHex(uc / 16);
    csBuf[ulOffset++] = ToHex(uc % 16);
    if (bAddSpace)
        csBuf[ulOffset++] = ' ';
}
Exemplo n.º 2
0
void
DevicePCI::InitFromAttributes()
{
	// Process the attributes
	fClassBaseId = atoi(fAttributeMap[B_DEVICE_TYPE].String());
	fClassSubId = atoi(fAttributeMap[B_DEVICE_SUB_TYPE].String());
	fClassApiId = atoi(fAttributeMap[B_DEVICE_INTERFACE].String());
	fVendorId = atoi(fAttributeMap[B_DEVICE_VENDOR_ID].String());
	fDeviceId = atoi(fAttributeMap[B_DEVICE_ID].String());

	// Looks better in Hex, so rewrite
	fAttributeMap[B_DEVICE_TYPE] = ToHex(fClassBaseId);
	fAttributeMap[B_DEVICE_SUB_TYPE] = ToHex(fClassSubId);
	fAttributeMap[B_DEVICE_INTERFACE] = ToHex(fClassApiId);
	fAttributeMap[B_DEVICE_VENDOR_ID] = ToHex(fVendorId);
	fAttributeMap[B_DEVICE_ID] = ToHex(fDeviceId);

	// Fetch ClassInfo	
	char classInfo[64];
	get_class_info(fClassBaseId, fClassSubId, fClassApiId, classInfo,
		sizeof(classInfo));
	
	// Fetch ManufacturerName
	BString ManufacturerName;
	const char *venShort;
	const char *venFull;
	get_vendor_info(fVendorId, &venShort, &venFull);
	if (!venShort && !venFull) {
		ManufacturerName << B_TRANSLATE("Unknown");
	} else if (venShort && venFull) {
		ManufacturerName << venFull << "(" << venShort << ")";
	} else {
		ManufacturerName << (venShort ? venShort : venFull);
	}
	
	// Fetch DeviceName
	BString DeviceName;
	const char *devShort;
	const char *devFull;
	get_device_info(fVendorId, fDeviceId, fSubsystemVendorId, fSubSystemId,
		&devShort, &devFull);
	if (!devShort && !devFull) {
		DeviceName << B_TRANSLATE("Unknown");
	} else if (devShort && devFull) {
		DeviceName << devFull << "(" << devShort << ")";
	} else {
		DeviceName << (devShort ? devShort : devFull);
	}
	
	SetAttribute(B_TRANSLATE("Device name"), DeviceName);
	SetAttribute(B_TRANSLATE("Manufacturer"), ManufacturerName);
	SetAttribute(B_TRANSLATE("Driver used"), B_TRANSLATE("Not implemented"));
	SetAttribute(B_TRANSLATE("Device paths"), B_TRANSLATE("Not implemented"));
	SetAttribute(B_TRANSLATE("Class info"), classInfo);
	fCategory = (Category)fClassBaseId;
	BString outlineName;
	outlineName << ManufacturerName << " " << DeviceName;
	SetText(outlineName.String());
}
Exemplo n.º 3
0
//获取模拟端口数据
void GetAngolags(u8 ch,int chNum)
{
	adcx=Get_Adc_Average(ch,10);
	PacketBuf[24+5*chNum]=ToHex(adcx/1000);
	PacketBuf[25+5*chNum]=ToHex(adcx%1000/100);
	PacketBuf[26+5*chNum]=ToHex(adcx%100/10);
	PacketBuf[27+5*chNum]=ToHex(adcx%10);
}
Exemplo n.º 4
0
std::string NullUnsolicited(uint8_t seq, const IINField& iin)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDUResponse response(buffer.GetWSlice());
	build::NullUnsolicited(response, seq, iin);
	return ToHex(response.ToRSlice());
}
Exemplo n.º 5
0
_tsTraceMethodExt::~_tsTraceMethodExt()
{
	TSTRACEValidateHeaps();
	if (enabled)
	{
		if (m_outMessage.size() != 0)
		{
			if (m_error)
			{
				FrameworkError << m_outMessage << tscrypto::endl;
				LOG(CallTrace, "Error: " << m_outMessage);
			}
			else
			{
				LOG(CallTrace, m_outMessage);
			}
		}
		else
		{
			LOG(FrameworkError, "Error:  Exception or unknown return value\n");
			LOG(CallTrace, "Error:  Exception or unknown return value\n");
		}
		LOGD(CallTrace, outdent);
		LOG(CallTrace, "END // " << m_method << " [" << ToHex()(this) << " - " << classInstance << "]");
	}
}
Exemplo n.º 6
0
_tsTraceFunctionExt::~_tsTraceFunctionExt()
{
	TSTRACEValidateHeaps();
	if (m_info.enabled)
	{
		if (m_outMessage.size() != 0)
		{
			if (m_error)
			{
				LOG(FrameworkError, m_outMessage);
				LOG(CallTrace, "Error: " << m_outMessage);
			}
			else
			{
				LOG(CallTrace, m_outMessage);
			}
		}
		else
		{
			LOG(FrameworkError, "Error:  Exception or unknown return value\n");
			LOG(CallTrace, "Error:  Exception or unknown return value\n");
		}
		if (m_This != NULL)
		{
			LOGD(CallTrace, outdent);
			LOG(CallTrace, "END " << m_info.name << " // 0x" << ToHex()(this));
		}
		else
		{
			LOGD(CallTrace, outdent);
			LOG(CallTrace, "END " << m_info.name);
		}
		CallTrace << tscrypto::endl;
	}
}
Exemplo n.º 7
0
std::string AuthErrorResponse(
    opendnp3::IINField iin,
    uint8_t appSeq,
    uint32_t challengeSeqNum,
    uint16_t user,
    uint16_t assocId,
    opendnp3::AuthErrorCode code,
    opendnp3::DNPTime timestamp,
    std::string hexErrorText)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDUResponse apdu(buffer.GetWSlice());

	apdu.SetControl(AppControlField(true, true, false, false, appSeq));
	apdu.SetFunction(FunctionCode::AUTH_RESPONSE);
	apdu.SetIIN(iin);

	HexSequence hexErrorTextBuff(hexErrorText);

	Group120Var7 error(
	    challengeSeqNum,
	    user,
	    assocId,
	    code,
	    timestamp,
	    hexErrorTextBuff.ToRSlice()
	);

	apdu.GetWriter().WriteFreeFormat(error);

	return ToHex(apdu.ToRSlice());
}
Exemplo n.º 8
0
_tsTraceClassExt::~_tsTraceClassExt()
{
	if (m_TraceInfo.enabled)
	{
		LOG(CallTrace, "DESTROY " << m_TraceInfo.name << " [" << ToHex()(this) << " - " << m_classInstance << "]");
	}
}
Exemplo n.º 9
0
std::string KeyStatusResponse(
    IINField iin,
    uint8_t seq,
    uint32_t ksq,
    uint16_t user,
    KeyWrapAlgorithm keyWrap,
    KeyStatus status,
    HMACType hmacType,
    const std::string& challenge,
    const std::string& hmac
)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDUResponse apdu(buffer.GetWSlice());
	apdu.SetControl(AppControlField(true, true, false, false, seq));
	apdu.SetFunction(FunctionCode::AUTH_RESPONSE);
	apdu.SetIIN(iin);

	HexSequence challengeBuff(challenge);
	HexSequence hmacBuff(hmac);

	Group120Var5 rsp;
	rsp.keyChangeSeqNum = ksq;
	rsp.userNum = user;
	rsp.keyWrapAlgo = keyWrap;
	rsp.keyStatus = status;
	rsp.hmacAlgo = hmacType;
	rsp.challengeData = challengeBuff.ToRSlice();
	rsp.hmacValue = hmacBuff.ToRSlice();

	apdu.GetWriter().WriteFreeFormat(rsp);

	return ToHex(apdu.ToRSlice());
}
Exemplo n.º 10
0
std::string UrlCode::Encode(std::string url)
{
	const char *pstr = url.c_str();
	char *buf = new char[url.length() * 3 + 1];
	char *pbuf = buf;

	while (*pstr) {
		if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') {
			*pbuf++ = *pstr;
		} else if (*pstr == ' ') {
			*pbuf++ = '+';
		} else {
			*pbuf++ = '%';
			*pbuf++ = ToHex(*pstr >> 4);
			*pbuf++ = ToHex(*pstr & 15);
		}

		pstr++;
	}

	*pbuf = '\0';

	std::string encoded = buf;
	delete buf;

	return encoded;
}
Exemplo n.º 11
0
std::string ClassTask(FunctionCode fc, uint8_t seq, const ClassField& field)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDURequest request(buffer.GetWSlice());
	opendnp3::build::ClassRequest(request, fc, field, seq);
	return ToHex(request.ToRSlice());
}
Exemplo n.º 12
0
cacheItem* WCache<cacheItem, cacheActual>::AttemptNew(const string& filename, int submode)
{
    cacheItem* item = NEW cacheItem;
    if (!item)
    {
        mError = CACHE_ERROR_BAD_ALLOC;
        return NULL;
    }

    mError = CACHE_ERROR_NONE;

    if (!item->Attempt(filename, submode, mError) || !item->isGood())
    {
        //No such file. Fail
        if (mError == CACHE_ERROR_404)
        {
            DebugTrace("AttemptNew failed to load. Deleting cache item " << ToHex(item));
            SAFE_DELETE(item);
            return NULL;
        }
        else
        {
            DebugTrace("AttemptNew failed to load (not a 404 error). Deleting cache item " << ToHex(item));
            SAFE_DELETE(item);
            mError = CACHE_ERROR_BAD;
            return NULL;
        }
    }

    //Success! Enforce cache limits, then return.
    mError = CACHE_ERROR_NONE;

    return item;
}
Exemplo n.º 13
0
std::string ClearRestartIIN(uint8_t seq)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDURequest request(buffer.GetWSlice());
	build::ClearRestartIIN(request, seq);
	return ToHex(request.ToRSlice());
}
Exemplo n.º 14
0
std::string MeasureDelay(uint8_t seq)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDURequest request(buffer.GetWSlice());
	build::MeasureDelay(request, seq);
	return ToHex(request.ToRSlice());
}
Exemplo n.º 15
0
std::string ChallengeResponse(
    opendnp3::IINField iin,
    uint8_t seq,
    uint32_t csq,
    uint16_t user,
    HMACType hmacType,
    ChallengeReason reason,
    std::string challengeDataHex
)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDUResponse apdu(buffer.GetWSlice());

	apdu.SetControl(AppControlField(true, true, false, false, seq));
	apdu.SetFunction(FunctionCode::AUTH_RESPONSE);
	apdu.SetIIN(iin);

	HexSequence challengeBuff(challengeDataHex);

	Group120Var1 rsp(
	    csq,
	    user,
	    hmacType,
	    reason,
	    challengeBuff.ToRSlice()
	);

	apdu.GetWriter().WriteFreeFormat(rsp);

	return ToHex(apdu.ToRSlice());
}
Exemplo n.º 16
0
void CKadScript::SaveData()
{
	wstring FileName = ToHex(m_CodeID.GetData(), m_CodeID.GetSize());

	wstring ScriptPath = GetParent<CKademlia>()->Cfg()->GetString("ScriptCachePath");
	if(!ScriptPath.empty())
		SaveData(ScriptPath + L"/" + FileName + L".dat");
}
Exemplo n.º 17
0
char * getQueryParam(const char * queryString, const char *name)
{
	char bufferAmpersand[MAX_BUFFER_SIZE];
	char bufferQuestion[MAX_BUFFER_SIZE];
	snprintf(bufferQuestion,MAX_BUFFER_SIZE-1,"?%s=",name);
	snprintf(bufferAmpersand,MAX_BUFFER_SIZE-1,"&%s=",name);
	char *buffer;
	char *pos1;


	char *value = malloc(MAX_BUFFER_SIZE*sizeof(char));
	if (value == NULL) {
		printf("Could not allocate memory.");
		exit(EXIT_FAILURE);
	}
	int i;

	buffer=bufferQuestion;
	pos1 = strstr(queryString,bufferQuestion);
	printf ("Buffer %s Pos %s\n",buffer,pos1);
	if (!pos1) {
		buffer=bufferAmpersand;
		pos1 = strstr(queryString, bufferAmpersand);
	}
	if (pos1) {
		pos1 += strlen(buffer);
		i=0;
		while (*pos1 && *pos1 != '&' && i<MAX_BUFFER_SIZE) {
			if (*pos1 == '%') {
				value[i]= (char)ToHex(pos1[1]) * 16 + ToHex(pos1[2]);
				pos1 += 3;
			} else if( *pos1=='+' ) {
				value[i] = ' ';
				pos1++;
			} else {
				value[i] = *pos1++;
			}
			i++;
		}
		value[i] = '\0';
		return value;
	}

	strcpy(value, UNDEFINED);
	return value;
}
Exemplo n.º 18
0
//合并温湿度传感器数据并生成数据包
void MergeDHT1(void)
{
	Clear(PacketBuf);
	PacketBuf[0]=0x15;
	PacketBuf[4]=0x00;
	PacketBuf[8]=0x09;
	PacketBuf[1]=PacketBuf[2]=PacketBuf[3]=PacketBuf[5]=PacketBuf[6]=PacketBuf[7]=PacketBuf[9]=PacketBuf[10]=PacketBuf[11]=0;
	PacketBuf[12]= ToHex(((int)buf[0]/10));
	PacketBuf[13]= ToHex(((int)buf[0]%10));
	PacketBuf[14]='.';
	PacketBuf[15]='0';
	PacketBuf[16]='%';
	PacketBuf[17]=ToHex(((int)buf[2]/10));
	PacketBuf[18]=ToHex(((int)buf[2]%10));
	PacketBuf[19]='.';
	PacketBuf[20]='0';
}
Exemplo n.º 19
0
std::string Confirm(uint8_t seq, bool unsol)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDURequest apdu(buffer.GetWSlice());
	apdu.SetControl(AppControlField(true, true, false, unsol, seq));
	apdu.SetFunction(FunctionCode::CONFIRM);
	return ToHex(apdu.ToRSlice());
}
Exemplo n.º 20
0
_tsTraceClassExt::_tsTraceClassExt(const _tsTraceInfoExt &info) :
m_TraceInfo(info),
m_classInstance(GetNewObjectId())
{
	if (m_TraceInfo.enabled)
	{
		LOG(CallTrace, "CREATE  " << m_TraceInfo.name << " [" << ToHex()(this) << " - " << m_classInstance << "]");
	}
}
Exemplo n.º 21
0
CK_ULONG ByteArrayToString( CK_CHAR_PTR* destString ,CK_ULONG ulDestLen,CK_BYTE* byteArray, CK_ULONG ulArrayLen)
{
	unsigned long ulOffset = 0;
	CK_ULONG i;
	CK_CHAR_PTR pcbuf = *destString;

	if((ulDestLen+1) < ulArrayLen)
		return 1;

	for (i = 0; i < ulArrayLen; i++)
	{
		pcbuf[ulOffset++] = ToHex(byteArray[i] / 16);
    pcbuf[ulOffset++] = ToHex(byteArray[i] % 16);
	}
	pcbuf[ulOffset] = '\0';

	return 0;
}
Exemplo n.º 22
0
CString CEIBRecord::PrintValue() const
{
	CString ret("0x");
	for(int i =0; i < _value_len; ++i)
	{
		ret += ToHex((int)_value[i]);
	}
	return ret;
}
Exemplo n.º 23
0
std::string KeyWrapData(
    uint16_t keyLengthBytes,
    uint8_t keyRepeatValue,
    std::string keyStatusMsg
)
{
	Buffer key(keyLengthBytes);
	key.GetWSlice().SetAllTo(keyRepeatValue);
	auto keyHex = ToHex(key.ToRSlice());
	HexSequence statusBuffer(keyStatusMsg);

	Buffer lengthBuff(2);
	auto lenDest = lengthBuff.GetWSlice();
	UInt16::WriteBuffer(lenDest, keyLengthBytes);
	auto lengthHex = ToHex(lengthBuff.ToRSlice());

	return AppendHex({lengthHex, keyHex, keyHex, keyStatusMsg});
}
Exemplo n.º 24
0
std::string EmptyAuthResponse(uint8_t seq, const opendnp3::IINField& iin)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDUResponse response(buffer.GetWSlice());
	response.SetFunction(FunctionCode::AUTH_RESPONSE);
	response.SetControl(AppControlField(true, true, false, false, seq));
	response.SetIIN(iin);
	return ToHex(response.ToRSlice());
}
Exemplo n.º 25
0
 std::string ToNibblesString() const
 {
   assert(IsNibbles());
   const uint_t fixed = Zeroes ^ Ones;
   const uint_t hiNibble = fixed >> 4;
   const uint_t loNibble = fixed & 15;
   std::string result(3, ' ');
   result[0] = hiNibble == 15 ? ToHex(Ones >> 4) : 'x';
   result[1] = loNibble == 15 ? ToHex(Ones & 15) : 'x';
   return result;
 }
Exemplo n.º 26
0
std::string RequestKeyStatus(uint8_t seq, uint16_t user)
{
	Buffer buffer(DEFAULT_MAX_APDU_SIZE);
	APDURequest apdu(buffer.GetWSlice());
	apdu.SetControl(AppControlField(true, true, false, false, seq));
	apdu.SetFunction(FunctionCode::AUTH_REQUEST);
	Group120Var4 status;
	status.userNum = user;
	apdu.GetWriter().WriteSingleValue<UInt8>(QualifierCode::UINT8_CNT, status);
	return ToHex(apdu.ToRSlice());
}
Exemplo n.º 27
0
Arquivo: safeTo.c Projeto: ryanhs/cweb
void rawUrlDecode(char *qs, char *rtn, int maxChar)
{
	int i = 0;
    for(; *qs != '\0'; qs++, rtn++) {
		if(i == maxChar){
			break;
		}

        if(*qs == '%') {
            *rtn = (char) ToHex(qs[1]) * 16 + ToHex(qs[2]);
            qs++;
            qs++;
        } else if(*qs == '+') {
            *rtn = ' ';
        } else
            *rtn = *qs;
    }

    rtn++;
    *rtn = '\0';
}
Exemplo n.º 28
0
//合并数字信号和模拟信号
void MergeDigitalAndAnalog(void)
{
	Clear(PacketBuf);
	PacketBuf[0]=0x59;
	PacketBuf[4]=0x02;
	PacketBuf[8]=0x4D;
	PacketBuf[1]=PacketBuf[2]=PacketBuf[3]=PacketBuf[5]=PacketBuf[6]
	=PacketBuf[7]=PacketBuf[9]=PacketBuf[10]=PacketBuf[11]=0;
	PacketBuf[12]='{';
	PacketBuf[13]=PacketBuf[21]=PacketBuf[60]=PacketBuf[69]='"';
	PacketBuf[14]='A';
	PacketBuf[15]='n';
	PacketBuf[16]='a';
	PacketBuf[17]='l';
	PacketBuf[18]='o';
	PacketBuf[19]='g';
	PacketBuf[20]='s';
	PacketBuf[22]=PacketBuf[70]=':';
	PacketBuf[23]=PacketBuf[71]='[';
	PacketBuf[28]=PacketBuf[33]=PacketBuf[38]=PacketBuf[43]=PacketBuf[48]
	=PacketBuf[53]=PacketBuf[59]=PacketBuf[73]=PacketBuf[75]=PacketBuf[77]
	=PacketBuf[79]=PacketBuf[81]=PacketBuf[83]=PacketBuf[85]=',';
	PacketBuf[58]=PacketBuf[87]=']';
	PacketBuf[61]='D';
	PacketBuf[62]='i';
	PacketBuf[63]='g';
	PacketBuf[64]='i';
	PacketBuf[65]='t';
	PacketBuf[66]='a';
	PacketBuf[67]='l';
	PacketBuf[68]='s';
	PacketBuf[88]='}';
	GetAngolags(ADC_Channel_0,0);
	GetAngolags(ADC_Channel_1,1);
	GetAngolags(ADC_Channel_2,2);
	GetAngolags(ADC_Channel_3,3);
	GetAngolags(ADC_Channel_4,4);
	GetAngolags(ADC_Channel_5,5);
	GetAngolags(ADC_Channel_6,6);
	PacketBuf[72]=ToHex(LED1);
	PacketBuf[74]=ToHex(LED2);
	PacketBuf[76]=ToHex(LED3);
	PacketBuf[78]=ToHex(LED4);
	PacketBuf[80]=ToHex(LED5);
	PacketBuf[82]=ToHex(LED6);
	PacketBuf[84]=ToHex(LED7);
	PacketBuf[86]=ToHex(LED8);
}
Exemplo n.º 29
0
//----------------------------------------------------------------------
// Parse the raw file data in to an array of uchar's.  The data must
// be hex characters possible seperated by white space
//     12 34 456789ABCD EF
//     FE DC BA 98 7654 32 10
// would be converted to an array of 16 uchars.
// return the array length.  If an invalid hex pair is found then the
// return will be 0.
//
int ParseData(char *inbuf, int insize, uchar *outbuf, int maxsize)
{
   int ps, outlen=0, gotmnib=0;
   uchar mnib;

   // loop until end of data
   for (ps = 0; ps < insize; ps++)
   {
      // check for white space
      if (isspace(inbuf[ps]))
         continue;
      // not white space, make sure hex
      else if (isxdigit(inbuf[ps]))
      {
         // check if have first nibble yet
         if (gotmnib)
         {
            // this is the second nibble
            outbuf[outlen++] = (mnib << 4) | ToHex(inbuf[ps]);
            gotmnib = 0;
         }
         else
         {
            // this is the first nibble
            mnib = (uchar)ToHex(inbuf[ps]);
            gotmnib = 1;
         }
      }
      else
         return 0;

      // if getting to the max return what we have
      if ((outlen + 1) >= maxsize)
         return outlen;
   }

   return outlen;
}
Exemplo n.º 30
0
//----------------------------------------------------------------------
// Enter a hex string and convert it to an unsigned long
// (1-8) characters
//
int EnterHex(char *msg, int numchars, ulong *value)
{
   int tmp,cnt;
   int ch;

   // prompt
   printf("%s (enter hex, up to %d chars):",msg,numchars);

   *value = 0;

   cnt = 0;
   do
   {
      ch = getkeystroke();

      if (ch == 0x08)
      {
         printf("%c %c",ch,ch);
         if (cnt)
            cnt--;
      }
      else if (ch == 0x1B)
      {
         printf("  Aborted\n\n");
         return FALSE;
      }
      // caraige return
      else if (ch == 0x0A)
      {
         printf("\n");
         return TRUE;
      }
      else
      {
         tmp = ToHex((char)ch);
         if (tmp)
         {
            printf("%c",ch);
            *value <<= 4;
            *value |= tmp;
            cnt++;
         }
      }
   }
   while (cnt < numchars);

   printf("\n");

   return TRUE;
}