Open Side Menu Go to the Top
Register
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? (programming challenge) how does PokerTracker (et al) get data for their zoom HUDs?

05-17-2012 , 04:47 PM
right, hence, AP10s inferences
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 01:02 PM
Quote:
Originally Posted by VP$IP
http://forums.holdemmanager.com/mana...ml#post1019521


It is time to play "Name that DLL". Our contestants are now entering the studio.
what dll are they talking about? there is none and PS client is not loading anything unusual at runtime. at least not last time i checked. two possibilities:

a) there is none. then HEM is the next one to get banned from this contest
b) there is one. in this case it is overqualified as hidden interface for being hidden so well that it is not even present on my machine

holy cow. what is going on there?
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 01:44 PM
just reread the post:

Quote:
Originally Posted by VP$IP
Holdem Manager Support wrote this:
(the surprise is, our ZOOM HUD is not using OCR,.. which means it can accurately grab the list of playernames, from a DLL file that PokerStars supplies)
My guess is that Pokerstars indeed possible supplies an dll, which that can be injected by third party software.... not THAT unlikely..... afterall HEM2 has already 3 stars*.dll.....


and even more fancy, dll could be downloaded and injected at runtime
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 02:18 PM
Quote:
Originally Posted by noelte
just reread the post:

My guess is that Pokerstars indeed possible supplies an dll, which that can be injected by third party software.... not THAT unlikely..... afterall HEM2 has already 3 stars*.dll.....


and even more fancy, dll could be downloaded and injected at runtime

any dll you inject has to find data it can work upon in the client in the first place. if this is the case we may be talking a security leak that needs to be fixed. what good is all this aiding-bots-talk-nonsense when stars leaves holes open for PT and friends that can be abused by any dedicated bot coder just as well?

if you want to proove/disproove your assumption, go find ProcessExplorer on the net and check for dlls stars client has loaded. one time with HEM HUD running and one time without. i don't run HEM nor do i run windows so my hands are a bit bound. would be very kind if you posted the respective lists, screens whatevs.

Last edited by mme; 05-19-2012 at 02:20 PM. Reason: typo
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 03:54 PM
hmm, maybe i will indeed take a look just for curiosity....

and also, as far as i understood, it's not pokerstars policy to minimize access of third party software, they don't even have a problem with hooking the client. Their policy is hunting down software which doesn't fit their terms and conditions. Which was a surprise for me. On the other hand, this is as it should be.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 06:47 PM
(the surprise is, our ZOOM HUD is not using OCR,.. which means it can accurately grab the list of playernames, from a DLL file that PokerStars supplies)
was written in March by

Patvs
Location
Amsterdam, the Netherlands
Posts
20,729
whose latest post in the HEM forum was today

I am not certain what he meant by that statement.

He is also a 2+2 member.

I have sent him a PM asking him to clarify the issue.

Last edited by VP$IP; 05-19-2012 at 06:55 PM. Reason: sent PM
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 09:10 PM
PokerTracker/HoldemManager use 4 different techniques to read/grab info from PokerStars:
-1 OCR to read the chat window--> ="live tracking" this enables the software to display live pot odds. Other software (is it Holdem Indicator?) uses OCR to read the actual table itself to see who's still active in the hand.

-2 Import of handhistories

-3 Pre-fetch HUD (handgrabber)
-4 Zoom HUD

3 grabs the handhistories of tables you observe... or when you're sitting out / waiting for the big blind. (the technique is similar how FreePHG grabs observed handhistories from PartyPoker)

4 also grabs the list of player names. Though this is done differently for Zoom vs regular tables. I don't know how this is actually done / or which file has the data. So I generically just described it as "reading a .dll file". The poker tracking software have an agreement with PokerStars they will only grab 1-3 hands, thus this feature can't be used for datamining.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 09:12 PM
Quote:
Originally Posted by noelte
Their policy is hunting down software which doesn't fit their terms and conditions. Which was a surprise for me. On the other hand, this is as it should be.
it is - hunt them down. but in my book, watever it may be, it counts as a hidden interface. can you access it on mac? or on your iPhone or on android? i am pretty serious about this and i want an answer from stars. given all their statements on HUDs and the fact that you play at an advantage using one. i want to know what they have to say about putting users of non-windows platforms to a disadvantage. at the tables. every single hand.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 09:26 PM
Quote:
Originally Posted by greg nice
pretty sure HEM was using OCR for ftp's rush poker back in the day, whereas PT was using some better method.

maybe they are hooking the stars process to grab the data, ala

Yes, HEM first used OCR, then wrote the HUD stats to the player NOTE. (using the Full Tilt notes) Remember that? This was a horrible system. Though HEM had a workable RUSH HUD a couple of weeks before PT3. PT3 just hooked into PokerStars which was a superior method.... though it wasn't clear if this was allowed.

When it turned out PokerStars allowed it, HEM also switched to this method and dropped the OCR/NOTE system.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-19-2012 , 09:30 PM
lol, give up on this "mac should be equal" rubbish. If you insist on using a niche platform, it's entirely your own fault if not all mainstream options are available to you on that platform. be glad you have a native client at all. this theme appears a lot of your posts itt and it's pointless and derailing.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-20-2012 , 05:51 AM
what niche are you talking about? not shure ..you mean the non existent role microsoft plays on the tablet and mobile market?
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-20-2012 , 06:18 AM
Quote:
Originally Posted by Patvs
PokerTracker/HoldemManager use 4 different techniques to read/grab info from PokerStars:
-1 OCR to read the chat window--> ="live tracking" this enables the software to display live pot odds. Other software (is it Holdem Indicator?) uses OCR to read the actual table itself to see who's still active in the hand.

-2 Import of handhistories

-3 Pre-fetch HUD (handgrabber)
-4 Zoom HUD

3 grabs the handhistories of tables you observe... or when you're sitting out / waiting for the big blind. (the technique is similar how FreePHG grabs observed handhistories from PartyPoker)

4 also grabs the list of player names. Though this is done differently for Zoom vs regular tables. I don't know how this is actually done / or which file has the data. So I generically just described it as "reading a .dll file". The poker tracking software have an agreement with PokerStars they will only grab 1-3 hands, thus this feature can't be used for datamining.

ty for posting Patvs. just a quick remark: you usually do not read a dll for all you will find in it is machine code. a dll (Dynamic Link Library) is a library that may export interfaces or other functionality for programmers to interact with. and no, no other file "has" the data you need.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-20-2012 , 03:11 PM
Quote:
Originally Posted by mme

so back to the tables. double clicking a seat selects a player in the notes box. the same can be triggered via seat context menu selecting "Note". deducing what player is seated on what seat should not be too hard. programmatically double click a seat (via the windows SendInput api), check what player name is selected in the notes box by sending CB_GETCURSEL to the box and query the box for the player name given the index it returns. if CB_GETCURSEL returns CB_ERR you found heros seat because heros name is not in the box. this works for zoom tables and zoom tables only (assuming there is never a zoom table with fewer than N-max players) because for zoom the notes box never contains player names from other tables (at least according to my checks).
This looks promising.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-21-2012 , 02:04 AM
thats pretty much the method used in the PTR ahk scripts to get the villians names

btw:

Quote:
Originally Posted by mme
- you actually have to move the mouse to the position you want to click (stars client has a check for this in place and ignores mouse cklicks when the mouse pointer is not at the click position)
...
at least for single slicks, this has been false in the past, and i'm pretty sure still is
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-21-2012 , 03:58 PM
finally this thread gains a bit of speed. it was really hard work to get there :-) in true open source spirit i'd like to make a suggestion: a wiki or project page where the knowledge on how to do things on poker site X in programming language Y is made available in a comprehensive manner. maybe such a project could even help sites to come clear on their policy regarding 3rd party tools, cross platform issues and so on. an interesting project imo, given enough interest from the coding community on 2+2.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-21-2012 , 10:54 PM
I know gimick is lurking here and hasn't posted yet, so i'll post for him.

For FBDB we've (by "we" I mean mme and gimick) been looking at multiple ways of actually implementing a zoom HUD.

We gave up in the 'Write a notes file' idea pretty early on as the Stars notes importer doesn't allow you to replace content (at least that we know of) and has a few restrictions such as 'Player names must be in "order"' where order isn't exactly alphabetical.

Gimick came up with the idea of doing a 'fake OCR'.
- OCR the hand id
- Take a section of the screen for each player
-- Scrape it and md5, insert md5 into hash.
- Once that hand is actually written to disk, review the md5 and update the player name in the hash.

Once we have the handid and the scrape if the md5hash contains the player name, display hud stats, if not wait and we'll know for next time.

Its taken a few iterations, but he appears to have this working pretty reliably on Linux now.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-21-2012 , 11:43 PM
sounds like a good plan to me
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-22-2012 , 03:19 AM
did i understood it right, in your 'fake OCR' approch, you literally take a picture of the player name areas and match this via hash to the names later found in the hh? Guess this info is only valid on same table size....

interesting idea in general, not only in the current application
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-22-2012 , 03:58 AM
Quote:
Originally Posted by noelte
did i understood it right, in your 'fake OCR' approch, you literally take a picture of the player name areas and match this via hash to the names later found in the hh? Guess this info is only valid on same table size....

interesting idea in general, not only in the current application
That is the general limitation currently, though there is nothing preventing us having multiple entries for a single player. So long as we have an effective way to grab the 'correct' area on the screen (and know where Hero is for preferred seat) we can build up an effective hash lookup.

Gimick has already had to write some code to expunge duplicates when the screen scrape grabs 'Fold' on the screen (creating collisions and duplicates)

Limiting the table size to the default hasn't been an issue on Linux yet as the default client in Wine requires tweaking before table resize works at all.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-23-2012 , 11:30 PM
Thanks for the explanation.

I just started looking under the hood at Zoom, which puts me way behind you.

After clicking on a player's avatar, intercepted messages such as:
<xxxxx> xxxxxxxx S LB_FINDSTRINGEXACT indexStart:-1 (from the beginning) lpszFind: (xxxxxxxx) ("the player's name")
Nothing to write home about, but I am understanding the problem better.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-24-2012 , 12:16 AM
The avatar click generates a Combobox string search and a Listbox string search, with different pointers that return the same playername.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-24-2012 , 06:28 PM
yes, that's the connection from avatar to notes box. as said it is suseful for full tables only. another problem with this is that you actually trigger selecting player X in the notes box. so you will inevitably interfere with user actions like note taking.

for completeness sake: i checked if there is a connection from notes box to avatar (the other way around). try assigning a label to a player and see what happens: nothing. iirc, this used to work when the feature was introduced but from some client update on it was broken. not by accident as i would guess.

Last edited by mme; 05-24-2012 at 06:29 PM. Reason: typo
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-24-2012 , 08:21 PM
So that still leaves inspection of running copies of PT and/or HM as sources of info on the method(s) used.
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-25-2012 , 04:40 AM
Quote:
Originally Posted by VP$IP
So that still leaves inspection of running copies of PT and/or HM as sources of info on the method(s) used.
this or digging deeper into stars client. had a read meanwhile on the legal aspects (european law only): [http://eur-lex.europa.eu/smartapi/cg...model=guichett], on the legal protection of computer programs

---------------------------------------------
Directive 91/250 - Article 4 Restricted Acts

3. The person having a right to use a copy of a computer program shall be entitled, without the authorization of the rightholder, to observe, study or test the functioning of the program in order to determine the ideas and principles which underlie any element of the program if he does so while performing any of the acts of loading, displaying, running, transmitting or storing the program which he is entitled to do.

Directive 91/250 - Article 6 Decompilation

1. The authorization of the rightholder shall not be required where reproduction of the code and translation of its form within the meaning of Article 4 (a) and (b) are indispensable to obtain the information necessary to achieve the interoperability of an independently created computer program with other programs, provided that the following conditions are met:

(a) these acts are performed by the licensee or by another person having a right to use a copy of a program, or on their behalf by a person authorized to to so;

(b) the information necessary to achieve interoperability has not previously been readily available to the persons referred to in subparagraph (a); and (c) these acts are confined to the parts of the original program which are necessary to achieve interoperability.

---------------------------------------------

i am not a lawyer so be warned. but sounds to me like every legal owner of PT, HEM is free to studdy at his hearts content what it is doing (think freedom of science). regarding stars client: imo, there is effectively a hidden interface (if they name it like this or not irrelevant imo, as PT, HEM are obviously interoperating with the client). so article 6 paragraph 1 section b) should apply here.

Last edited by mme; 05-25-2012 at 04:42 AM. Reason: typo
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote
05-25-2012 , 09:53 AM
you still believe the stars has a hidden API that they are giving out to PT/HEM ? that just seems so farfetched to me
(programming challenge) how does PokerTracker (et al) get data for their zoom HUDs? Quote

      
m