A condition on a client that is communicating with a server is determined
by issuing a challenge to the client, causing the client to produce a
response indicative of the condition. The server compares the response to
an expected response to determine if the condition is as expected, and if
not, takes appropriate action, such as terminating the connection with
the client. The challenge preferably includes parameters and a code
segment that causes the client to produce the response by executing the
code segment. The code segment could perform a one-way hashing algorithm
of a portion of memory indicated in the parameters. The server can thus
determine if the client is using a modified basic input output system,
modified software, pirated software, or whether other conditions exist on
the client. The challenge can be changed to prevent the client from
returning a false, predetermined response to the challenge.