Преобразовать строку в шестнадцатеричный код - PullRequest
0 голосов
/ 10 октября 2019

У меня есть зашифрованная строка (данные)

data = «i] \ rD \ 004 \ 025 \ 027 \ 004_ ~ \ 002 \ 006`HZ @ UBY \ Ku \ 002O2 \003_MQB \ 020 \ 007G ~ \ 004Q ”

и ключ (в шестнадцатеричном формате)

ключ =« 0x7f0b0014 »

простой текст =key xor data

Я пытался расшифровать его в ruby, но ниже мне не удалось найти код одной из моих попыток.

data = "i]\rD\004\025\027\004_~\002\006`HZ@UBY\\Ku\002O2\003_MQB\020\007G~\004Q"
key = "7f0b0014"


# key changed to an array with chars in int stored in new_key
p new_key = [key].pack("H*").split(//).each.map { |x|  x.ord } 
#pack("H*") used on array GIVES STRING FROM HEX #.each.map change every [value] of an array by value.ord
p new_data = [data].pack("H*").split(//).each.map { |x| x.ord }

nd = Array.new
i,j = 0, 0 
while i < new_data.length do
  while j < new_key.length do
    new_data[i] = new_data[i].to_i ^ new_key[j].to_i
    j+=1
  end
  j=0
  nd << new_data[i].chr
  i+=1
end
p new_data
p nd.join 

#OUTPUT = "M\xBD%\x14\x9EFaP\x8BL.HC\x96\xCBgn*"

Я пытался:

  • добавить отступ "000 ...." слева от клавиши

  • добавить отступ ".... 000" справа отkey

  • зациклить ключ на той же длине, что и данные "7f0b00147f0b0014 ... 7f0b0014"

Вывод должен дать мне какой-то видстрока в формате "1227a5aa-ce82-4da8-9ba6-c49e809ba720".

Вот рабочий код, но ключ здесь был целым числом, а не строкой:

key = 52 # "R" 
data = "\005\006\006\003U\001UU\031WQ\f\006\031\000PU\f\031\rVU\002\031W\000\rQ\f\004\rVU\003\006\004"

new_data = Array.new
data.split(//).each do |e|
   new_data << (e.unpack("H*")[0].to_i(16) ^ key).chr
end

p new_data.join
#OUTPUT "1227a5aa-ce82-4da8-9ba6-c49e809ba720"
...