string Converter::xorHexAgainstHex(string input) {
    generateHex();
    vector<uint8_t> xorElement = generateHex(input);
    uint32_t length = _hex.size();
    if (length != xorElement.size()) {
        return string("Sizes of HexElements must match");
    }
    string payload;
    for (uint32_t i = 0; i < length; i++) {
        uint8_t item = _hex[i] ^xorElement[i];
        payload.push_back(hex_chars[item]);
    }
    return payload;
}
Example #2
0
int main ( int argc, char *argv[] )
{
  if ( argc != 2 ) {/* argc should be 2 for correct execution */
    printf( "usage: %s [up to 31 character string]", argv[0] );
    exit(EXIT_FAILURE);
  }

	int end = 0;
	char inputText[64];
  char* lowerString = inputText;
  char* upperString = NULL;
  
  //Extract up to 31 characters.
  strncpy(inputText,argv[1],31);
  inputText[31] = 0; //null terminate
  
  //Work out the length of the string
  unsigned int length = strlen(inputText);
  unsigned int upperLength = 0;
  unsigned int i;
  for(i = length+1; i < 64; i++){
    inputText[i] = 0xFF; //pad the page with 0xFF.
  }
  //Check if we need to split into two lines
  /*if (length > 15) {
    upperString = &inputText[16];
    upperLength = length - 15;
    length = length - upperLength;
  }
  length++;*/
  length = 16;
  upperLength = 16;
  upperString = &inputText[16];
  //Generate the lower hex string
  char intelHexString[44];
  generateHex(intelHexString,lowerString,length,0x1F00);
  printf("%s\n",intelHexString);
	if (upperString != NULL){
    generateHex(intelHexString,upperString,upperLength,0x1F10);
    printf("%s\n",intelHexString);
  }
  generateHex(intelHexString,&inputText[32],16,0x1F20);
  printf("%s\n",intelHexString);
  generateHex(intelHexString,&inputText[48],16,0x1F30);
  printf("%s\n",intelHexString);
  printf(":00000001FF\n");
  exit(0);
}
string Converter::getHex() {
    if (!_hexGenerated) {
        _hex = generateHex(_input);
        _hexGenerated = true;
    }
    string payload;
    for (uint8_t u: _hex) {
        payload.push_back(hex_chars[u]);
    }
    return payload;
}
string Converter::hexToStringWithXor(uint8_t xorInput) {
    generateHex();
    string payload;
    uint32_t length = _hex.size();
    for (int i = 0; i < length;) {
        uint8_t item = _hex[i++] << 4;
        if (i < length) {
            item |= _hex[i++];
        }
        payload.push_back(item ^ xorInput);
    }
    return payload;
}
void Converter::generateHex() {
    if (!_hexGenerated) {
        _hex = generateHex(_input);
        _hexGenerated = true;
    }
}