User Tools

Site Tools


devicesal

This is an old revision of the document!


int
dev_0x01 (blob_t someblob, bool_t somebool)
{
  int res;

  if (somebool == 1)
    {
      res = dev_0x00 (someblob);
      if (res != 0)
        return res;
    }
  int some_nr = (unsigned) SubBlob (someblob, 0, 4);
  int some_nr2 = (unsigned) dev_0xd1 (some_nr);
  res = "localekb" (some_nr2);
  // FIXME: Don't know the stack layout after this.

  if (res != 0)
    return;  // but what?

  blob_t someblob2;  // probably from localekb

  int some_nr3 = (signed) SubBlob (someblob2, 0, 4) + 1;
  vector<blob_t> vec;
  do
    {
      vec.append (SubBlob (some_nr3 * 16, 24));
    }
  while (some_nr3-- >= 0);


  int some_nr3 = (signed) SubBlob (someblob2, 0, 4);
  res = dev_0xc1 (some_nr3);
  if (res != 0)
     return res;

  int some_nr4 = (signed) SubBlob (someblob2, 16, 4);
  if (some_nr3 == some_nr4)
    return 0;
  else
    return 8;

  // is vec returned as well?  it's still on the stack.
}


int
dev_0xb7 (any_t thing)
{
  if (get_type (thing) != TYPE_BLOB)
    return 0;
  if (thing[2] == 0x31)
    return 2;
  else
    {
      if (! strncmp (thing, "\x31\x31", 2))
        return 1;
      else
        return 0;
    }
}

block_t
dev_0xd1 (int nr)
{
  if (nr > 1)
    {
      0x80 ("Invalid version...");
      return 0;
    }
  else
    {
      return 00 81 00 00 00 00 00 00;
    }
}


// Some decrypt function.
any_t
dev_0xd8 (blob_t data1, blob_t data2)
{
  blob_t data3 = data2 XOR concat (dict[0xfc], dict[0xfc]);
  dict[0xdb] = data3;

  blob_t shasum = SHA1 (data3[0..1f]);
  blob_t iv = shasum[0..7];
  blob_t key = shasum[8..15]

  blob_t dec_data1 = DES_CBC_Decrypt (data1, iv, key, 0xd8_DESDecrypt);
 
  int len = blob_length (dec_data);
  // Round up to multiple of 8.
  len = (len + 7) / 8 * 8;

  blob_t out = repeat_nul (len);
  // Modifies OUT.  1 means that length is provided.
  out = native::ocmmod (dec_data1, out, shasum, len, 1);
  return decode_asn1 (out);
}
devicesal.1241509020.txt.gz · Last modified: 2009/05/05 07:37 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki