Quote:
Injection настроен на получение не зашифрованных пакетов, для чего нужно снять шифрование с клиента.
Никто его не настраивал;) и принимает он как криптованые так и не криптованые пакеты, а передает в клиент только не криптованые.
В отличаа от инжекта, тот же разор (поповоду асиста не знаю, но на 99% тот же принцип) перехват осущевствляется после того как пакет расшифруется самим клиентом и до как пойдет на шифрование, в инжекте же на оборот все;) По чему то разработчики решили, что хорошо было бы управлять шифрованием, в итоге получили, что в случаи не известных ключей инжект просто не работоспособен.
Quote:
На самом деле - для шифрования пакетов Injection необходимо знать три ключа, но третий выясняется по ходу дела, поэтому его указывать не нужно.
На самом деле 3 ключ не вычисляется походу. их ровно 3, просто ввиду избраного алгоритма кодирования стадии подключения (логин), если один ключь отличается от другово всего 1 младшим битом, то ключи идентичны, а если не младшим;)) то тогда мы имеем вариант с абисом;)
Code:
void LoginCrypt::encrypt(unsigned char * in, unsigned char * out, int len)
{
for(int i = 0; i < len; i++)
{
out[i] = in[i] ^ static_cast<unsigned char>(m_key[0]);
unsigned int table0 = m_key[0];
unsigned int table1 = m_key[1];
m_key[1] =
(
(
(
((table1 >> 1) | (table0 << 31))
^ m_k1
)
>> 1
)
| (table0 << 31)
) ^ m_k1;
m_key[0] = ((table0 >> 1) | (table1 << 31)) ^ m_k2;
}
}
это то что имеет инжект, а вот что на самом деле
Code:
void LoginCrypt::encrypt(unsigned char * in, unsigned char * out, int len)
{
for(int i = 0; i < len; i++)
{
out[i] = in[i] ^ static_cast<unsigned char>(m_key[0]);
unsigned int table0 = m_key[0];
unsigned int table1 = m_key[1];
m_key[1] =
(
(
(
((table1 >> 1) | (table0 << 31))^ m_k2
)>> 1
)
| (table0 << 31)
) ^ m_k1;
m_key[0] = ((table0 >> 1) | (table1 << 31)) ^ m_k3;
}
}
соответствено младший бит ключа m_k2 мало значим, так как присутствует опирация сдвига на 1 бит в право, следовательно (как оно и есть во всех клиентах) если разница между (вовтором примере) ключами m_k2 и m_k1 1 бит (младший) то они эдентичны;)