version 1.1, 1999/09/26 20:53:34 |
version 1.2, 1999/09/28 04:45:36 |
|
|
/* Requests forwarding of X11 connections, generates fake authentication |
/* Requests forwarding of X11 connections, generates fake authentication |
data, and enables authentication spoofing. */ |
data, and enables authentication spoofing. */ |
|
|
void x11_request_forwarding_with_spoofing(RandomState *state, |
void x11_request_forwarding_with_spoofing(const char *proto, const char *data) |
const char *proto, const char *data) |
|
{ |
{ |
unsigned int data_len = (unsigned int)strlen(data) / 2; |
unsigned int data_len = (unsigned int)strlen(data) / 2; |
unsigned int i, value; |
unsigned int i, value; |
char *new_data; |
char *new_data; |
int screen_number; |
int screen_number; |
const char *cp; |
const char *cp; |
|
u_int32_t rand; |
|
|
cp = getenv("DISPLAY"); |
cp = getenv("DISPLAY"); |
if (cp) |
if (cp) |
|
|
{ |
{ |
if (sscanf(data + 2 * i, "%2x", &value) != 1) |
if (sscanf(data + 2 * i, "%2x", &value) != 1) |
fatal("x11_request_forwarding: bad authentication data: %.100s", data); |
fatal("x11_request_forwarding: bad authentication data: %.100s", data); |
|
if (i % 4 == 0) |
|
rand = arc4random(); |
x11_saved_data[i] = value; |
x11_saved_data[i] = value; |
x11_fake_data[i] = random_get_byte(state); |
x11_fake_data[i] = rand & 0xff; |
|
rand >>= 8; |
} |
} |
x11_saved_data_len = data_len; |
x11_saved_data_len = data_len; |
x11_fake_data_len = data_len; |
x11_fake_data_len = data_len; |