Piggy Back software

I

inkexit

I'm looking for a language I can learn that would be able to piggy back
existing web software. For example, one use for this would be to
create a poker bot.

The software would have to be able to "read" the information in the
fulltilt window. Such as how much the bet is, how much each player has
in their stack, etc. It would also have to be able to "click" on a
choice of action, call, fold, raise, etc. I know that since this info
exists somewhere in RAM I must be able to access it. I also know that
because when I click on a button, this basically amounts to a small
string being sent to the fulltilt server, that this should be do-able
by a "piggy back" program.

I have a years worth of C++ experience. I thought that becuase the web
is largely Java based, that Java might be a better choice. I think
Python might work as well, but I know next to nothing about Python. If
somebody could point me in the right direction with this, it would be
much appreciated.
 
A

Andrew Thompson

Gordon said:

Perhaps the OP was thinking of applets, but..
- Applets are not a 'large part' of the net.
- Applets are not suited to the use described
(at least - no more so, than a Java application).
- Only the OP can clarify what they actually meant.

Andrew T.
 
O

Oliver Wong

I'm looking for a language I can learn that would be able to piggy back
existing web software. For example, one use for this would be to
create a poker bot.

The software would have to be able to "read" the information in the
fulltilt window. Such as how much the bet is, how much each player has
in their stack, etc. It would also have to be able to "click" on a
choice of action, call, fold, raise, etc. I know that since this info
exists somewhere in RAM I must be able to access it.
[...]

I have a years worth of C++ experience. I thought that becuase the web
is largely Java based, that Java might be a better choice.

Java would be a bad choice, if one of the requirements is reading values
in arbitrary locations in RAM. Most modern OSes also disallow one process to
poke around in the RAM of another process. (see
http://en.wikipedia.org/wiki/Memory_management_unit)

You might have better luck writing a fake client. This could more easily
be done in Java. You'd have to reverse engineer the protocol, though.

- Oliver
 
M

Martin Gregorie

I'm looking for a language I can learn that would be able to piggy back
existing web software. For example, one use for this would be to
create a poker bot.
This all sounds strangely like the thread started a month or two back by
the gentleman who wanted to patent a program that amounted to a scripted
screen scraper but who couldn't/wouldn't admit that was what it was.

Go find that thread and read it. You may well find what you need to know
was already discussed in it.
 
I

inkexit

Martin said:
This all sounds strangely like the thread started a month or two back by
the gentleman who wanted to patent a program that amounted to a scripted
screen scraper but who couldn't/wouldn't admit that was what it was.

Go find that thread and read it. You may well find what you need to know
was already discussed in it.

Would love too, and thank you for bringing it to my attention. Can you
give me the author's name, or some words in the title of the thread, or
any other words I can search for? I tried searching for "scripted
screen scraper" but only my thread came up. Thanks again.
 
I

inkexit

Oliver said:
I'm looking for a language I can learn that would be able to piggy back
existing web software. For example, one use for this would be to
create a poker bot.

The software would have to be able to "read" the information in the
fulltilt window. Such as how much the bet is, how much each player has
in their stack, etc. It would also have to be able to "click" on a
choice of action, call, fold, raise, etc. I know that since this info
exists somewhere in RAM I must be able to access it.
[...]

I have a years worth of C++ experience. I thought that becuase the web
is largely Java based, that Java might be a better choice.

Java would be a bad choice, if one of the requirements is reading values
in arbitrary locations in RAM. Most modern OSes also disallow one process to
poke around in the RAM of another process. (see
http://en.wikipedia.org/wiki/Memory_management_unit)

You might have better luck writing a fake client. This could more easily
be done in Java. You'd have to reverse engineer the protocol, though.

Yes, now that you mention it, I have heard the windows is really bad at
allowing you to acess RAM allocated to another program. Is there
anyway I can intercept the data coming off the LAN card before it gets
allocated elsewhere. If I remember by networking basics correctly,
this data would contain a fulltilt ID tag in one of the headers, but it
must exist somewhere else before it get's sent to the "full tilt ram
space." Sorry if my lingo is a bit lacking here but I think you can
follow my logic.
 
D

Daniel Dyer

Yes, now that you mention it, I have heard the windows is really bad at
allowing you to acess RAM allocated to another program. Is there
anyway I can intercept the data coming off the LAN card before it gets
allocated elsewhere. If I remember by networking basics correctly,
this data would contain a fulltilt ID tag in one of the headers, but it
must exist somewhere else before it get's sent to the "full tilt ram
space." Sorry if my lingo is a bit lacking here but I think you can
follow my logic.

The easiest approach to getting the messages that go backwards and
forwards between a client and the server would be to set-up some kind of
proxy and perform a sort of man-in-the-middle "attack" and dump the
messages to a log.

Keep in mind that connecting your own software to their servers is almost
certainly against the terms and conditions of the poker room and you run
the risk of having your account terminated and any funds in it confiscated
(the online equivalent of being taken into a windowless casino backroom).
Furthermore, these sites have measures in place to detect anomalies or bot
software. If your client makes a mistake in the protocol or does
something a human would not, your account will become locked. Depending
on how much identity-checking Full Tilt do, it may not be all that easy to
open up another account.

So, while Oliver is right about the technical challenges, if you really
wanted to write a bot (and I couldn't possibly condone this) it may be
safer to go with the screen-scraping approach since by scripting the
existing client you cannot (accidentally) do anything that a real human
player couldn't do.

In addition, writing a bot to play poker well enough to beat humans is not
a straightforward task. But perhaps you could write something that could
beat beginners at fixed limit games. There are online competitions for
poker bot authors, if your interest is more academic than financial.

Finally, for best chances of remaining undetected, it's probably best not
to announce your target (along with your e-mail address) in a public
newsgroup.

Dan.

P.S. Unless you're on a Mac, there are better places to play poker online.
 
G

Gordon Beaton

Yes, now that you mention it, I have heard the windows is really bad
at allowing you to acess RAM allocated to another program.

Much like the locks on my doors, which are bad at letting you snoop
around in my home.

/gordon
 
O

Oliver Wong

Would love too, and thank you for bringing it to my attention. Can you
give me the author's name, or some words in the title of the thread, or
any other words I can search for? I tried searching for "scripted
screen scraper" but only my thread came up. Thanks again.

Keywords I used were "Java patent Chris crackpot", as I recall the main
concern of the OP was something about patents, and eventually one of the
Chrises (couldn't remember if it was Smith or Uppal) called the OP a
crackpot.

http://groups.google.com/group/comp..._frm/thread/6f1f205078af6309/70f252783e98d602

Not sure you'll find much "practical" information though. I think the
"informative" parts (in contrast to the trollish parts) are mostly about
terminology (e.g. "Swing is an API, not a language", etc.)

- Oliver
 
I

inkexit

Oliver said:
Keywords I used were "Java patent Chris crackpot", as I recall the main
concern of the OP was something about patents, and eventually one of the
Chrises (couldn't remember if it was Smith or Uppal) called the OP a
crackpot.

"Crackpot." Ha! That's pretty funny. You know you're in trouble when
you're looking for useful info by searching for derogatory terms.

Thanks to all who posted with helpful advice. No thanks to the smart
butts. Yes I know the web is certainly more HTML and Javascipt based
than anything else, but I also know that it is more Java based than C++
based, which was what I was refering to.
 
I

inkexit

Daniel said:
The easiest approach to getting the messages that go backwards and
forwards between a client and the server would be to set-up some kind of
proxy and perform a sort of man-in-the-middle "attack" and dump the
messages to a log.

Keep in mind that connecting your own software to their servers is almost
certainly against the terms and conditions of the poker room and you run
the risk of having your account terminated and any funds in it confiscated
(the online equivalent of being taken into a windowless casino backroom).
Furthermore, these sites have measures in place to detect anomalies or bot
software. If your client makes a mistake in the protocol or does
something a human would not, your account will become locked. Depending
on how much identity-checking Full Tilt do, it may not be all that easy to
open up another account.

So, while Oliver is right about the technical challenges, if you really
wanted to write a bot (and I couldn't possibly condone this) it may be
safer to go with the screen-scraping approach since by scripting the
existing client you cannot (accidentally) do anything that a real human
player couldn't do.

In addition, writing a bot to play poker well enough to beat humans is not
a straightforward task. But perhaps you could write something that could
beat beginners at fixed limit games. There are online competitions for
poker bot authors, if your interest is more academic than financial.

Finally, for best chances of remaining undetected, it's probably best not
to announce your target (along with your e-mail address) in a public
newsgroup.

Dan.

P.S. Unless you're on a Mac, there are better places to play poker online.


What an exceptionally useful post. Thanks much!

I find the biggest problem in playing poker online is the sheer
boredom. To play well you should end up folding about 75% of the time.
That's a lot of sitting on your thumbs. A computer never gets bored,
and can play 24/7. Also, ego and pride can get in the way of playing
good poker. A computer never feels a pang in it's pride when a bluff
isn't working out and it's commited a large percentage of it's stack to
a pot. It simply folds. (of course, I don't think bluffing would play
too large of a part in a good poker bot anyway, but...) On top of
these two things, most online poker rooms will allow you to play
several games at once. I never do this as it makes me nervous and
confuses me at times. A computer should have no porblems with this, in
fact, it should be able to do it better than most humans.

But, what are we talking about here? I only was talking about a poker
bot as an EXAMPLE of what I want to do. I would never, ever, ever
actually do such a thing as this. Never, ever, ever, ever. Never
ever....
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,266
Messages
2,571,075
Members
48,772
Latest member
Backspace Studios

Latest Threads

Top