• 0

    posted a message on Hearth Log [Experimental]
    Quote from Cano8»

    Are you willing to share how to parse the log into something readable by human? E.g.:

    Those messages are logged for each game message sent or received. The first number is the message type and the second is the message length, but no actual data appears in the client log. All of the actual processing is done on the server and I don't plan to release that code any time soon.

    However, you can see the results of the server processing with the replay feature on the site. Each action is displayed in the list at the bottom of the page with a tooltip that shows detailed log messages. If there is interest I could probably also setup another page that just lists out the log messages in a pure text format, but I figured the replay display to view what's going on would be more useful to most people.

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]
    Quote from schovan»

    I have two feature requests, It would be nice if you implement them.

    1. Logging constructed and arena stats separately (now I have to use 2 accounts)

    2. Option to reset all stats

    Sadly it's not possible to detect what type of game is being played in all cases. The game log itself doesn't contain any sort of game type field. Obviously if either player plays more than 2 of a single card it must be an arena game and if either player plays a golden card it must be a constructed game (but even then there is no way to tell ranked vs unranked apart).

    I have some ideas on how I might be able to infer when a deck is played multiple times to guess these things more accurately and might add a way for people to mark specific games as arena runs (possibly also allowing them to enter their rewards for that run as well), but it will likely be a while before I get a chance to fully test out these ideas and see if anything will work well enough in practice.

    As for resetting stats, I'm not sure if this is something I'll add at some point, but I am logging stats on a day-by-day basis and plan to add some more detailed analysis in the future. For example, I should be able to show a graph of performance over a certain time period or display your record for just the past week or month.

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from AgentPaper »

    First off, thanks for the sweet tool. Hopefully it'll receive support from Blizz so that it can be more stable and simpler to set up.

    However, I'm having an issue. I followed the steps listed on the first page, but the program doesn't seem to be logging my matches correctly. I've played a few games, but all the log shows is:

    12:41:43: Hearth Log v0.2.1
    12:41:43: D:\Program Files\Hearthstone\Hearthstone.exe v1.0.0.3937

    The file path there is correct, and I put in the Upload Key and downloaded and installed WinPcap as per the instructions. I checked my user page on the site and that shows up empty as well.

    Do I have to do something to set up WinPcap other than install it? I checked the start menu, but all it shows is uninstall and go to website.

    This looks like it might be an error that another user had. When you install WinPCap you need to make sure to answer "Yes" when it asks if you want to start the driver at boot time. Otherwise the packet capture driver isn't running (and can't be started without admin rights). You can start it manually from an admin command prompt, but it's easier to just make it start at boot time.

    If the driver isn't running you'll get the truncated log you posted where it's unable to find any network devices to listen on.

    Uninstalling WinPCap and then re-installing is the easiest way to fix this.

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from BanderitaUSA »

    You can use this JFiddle if you want to input any of the X-Y numbers to get a Win ratio percentage:

    http://jsfiddle.net/FacundoG/k2vCv/1/

    Just put the numbers in the textbox and press Calcular.

    Adding this to the site is pretty easy, I just need to make sure things don't get too cluttered.

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    I just pushed out a new update to the site today that lists recent games from all users on the home page and improves the game replay feature (added a turn timeline, as well as a few other tweaks--still plenty of room for improvement, though).

    At last check, I now have over 2500 game logs in the database. That should be enough so that I can start compiling some more interesting statistics. I'd like to add a global Win-Loss record display over all users as well as records for each card to try and see if there are any patterns to which cards are more likely to win games. Stay tuned! :)

    Note: I wish I could edit the thread title. I've been running the logger for several weeks now and several other people have been logging games as well without incident, so I now consider this project simply "Experimental" rather than "Highly Experimental".

    Posted in: General Discussion
  • 0

    posted a message on Puzzles and Hearthstones: Thinking Outside the Box

    Judging by your other comments, it looks like you could use some help with the game mechanics (which is understandable if you aren't in the beta and haven't had a chance to play). Here are some corrections to your solution to the first puzzle to help illustrate how things work:

     

    Turn 1:

    Use Backstab + Cold Blood on "Raging Worgen"

    "Worgen Infiltrator" attack's and kills "Faerie Dragon" both die (you must kill all minions with taunt before you can attack anything without taunt)

    (3 mana Crystals left) Use Hero Power "Dagger Mastery" and use "Deadly Poison", attack Ironfur Grizzly dealing 3 damage

    "Mana Addict" Gains 4+ (actually, it gains +6 from 3 spells: Backstab, Cold Blood, and Deadly Poison) and deals a total of 5 7 dmg, "Mana Addict" attack's Rexxar

    "Raging Worgen" Attack's Rexxar Dealing 14 (Raging Worgen has a base attack of 3, gains +1 from enrage and +4 from Cold Blood for 8 total attack--Windfury from enrage allows him to attack twice for a total of 16 damage) damage

     

    (Rexxar now has 6 Health) (Rexxar now has 2 Health since Mana Addict and Raging Worgen both did 2 more damage than you expected. This means you can finish him off this turn by attack him with the Worgen Infiltrator instead of trying to kill the Faerie Dragon.)

    Turn 2:

    "Raging Worgen" Attack's Rexxar Dealing 6 damage

    (Rexxar Die's You Win)

    So, you did more-or-less figure out how to solve this one, your math was just off a bit.

    Here's some notes on your solution to #2:

    Turn 1:

    Use "The Black Knight" and Destroy " Infernal (7/7 with Taunt)"

    Kill Defender of Argus with Spiteful Smith, giving Warrior +2 Weapon damage. (You can't attack a minion with taunt until all other taunt minions are dead. If you want to try and pull out a multi-turn win for this puzzle you'll have to attack kill the Booty Bay Bodyguard with your Spiteful Smith instead.)

    Garrosh uses Battle Axe dealing 4 damage to Booty Bay Bodyguard and takes 5 damage (Garrosh now has 9 health) (Doing this will result in your death next turn, so we'll try killing the Bodyguard with the Smith and killing the Voidwalker with this attack to keep Garrosh's health up at 13.)

    Use Youthful Brewmasters to withdraw The Black Knight

    (You have 2 mana left here, so you should use your Hero Power to gain 2 Armor putting you at 15 effective health.)

    Lord Jaraxxu's Turn:

    (Jaraxxus will take at least 1 Fatigue damage when he tries to draw a card at the start of his turn. It's unclear from the puzzle statement if he drew the final card from his deck last turn, but we'll assume that's the case since Jaraxxus is still at his starting health of 15.)

    Infernal (currently 7/5 with Taunt) Deals 7 Damage to Garrosh

    Voidwalker Deals 1 Damage to Garrosh (The Voidwalker is dead, but the Defender of Argus is still alive and can attack for 3, leaving you at 15 - 7 - 3 = 5 Health.)

    Use "Hero Power: INFERNO" summoning 6/6 Infernal

    (Jaraxxus can also attack with his 3/6 weapon, leaving Garrosh at 2 Health)

    (Garrosh now has 1 2 Health and Jaraxxus 15 14 Health)

    Turn 2:

    (Garrosh will take take 1 Fatigue damage when he tries to draw a card at the start of the turn, leaving him at 1 Health.)

    Use Molten Giant (Now costs 0 mana Crystal's)

    Use The Black Knight to Destroy Infernal (currently 7/5 with Taunt)

    Use Warsong Commander

    Spiteful Smith Attack's and kill's Voidwalker (Spiteful Smith now has 2 health) (Spiteful Smith can attack Jaraxxus directly since we killed the Voidwalker last turn, dealing 4 damage.)

    Molten Giant Attack's Infernal killing it and taking 6 damage (Molten Giant now has 2 health left) (There's no possible way you can survive to turn 3, so you have to try to kill Jaraxxus before then. Molten Giant should attack Jaraxxus for 8 damage.)

    The Black Knight Attack's Lord Jaraxxus dealing 6 4 damage

    (You also have a Youthful Brewmaster still in play that can attack for 3 damage. This deals a total of 4 + 8 + 4 + 3 = 19, which is enough to kill Jaraxxus this turn. But what if Jaraxxus had killed your Smith and Brewmaster last turn instead of directly attacking you with everything? He could have used the 7/5 Infernal to kill one of the Brewmaster, leaving it at 7/2, and the Defender of Argus to attack the Smith, killing both. At this point you would only be able to attack for 8 + 4 on the second turn, leaving Jaraxxus at 2 Health, but at the start of his next turn he would take 2 Fatigue damage when he tried to draw a card, killing him and giving you the victory.)

    Lord Jaraxxu's Turn:

    Use "Hero Power: INFERNO" summoning 6/6 Infernal

    (Garrosh now has 1 Health and Jaraxxus 9 Health)

    Turn 3:

    The Black Knight Attack's Infernal both die

    Molten Giant Attack's Jarraxu's dealing 8 damage and dies

    Spiteful Smith attack's Jaraxxu's both die

    (Garrosh now has 1 Health and Jaraxxus 0 Health, You Win)

    So, while there is a solution that allows you to win before pressing "End Turn" for this puzzle, it is also possible to ensure a win that takes up to 2 turns in this case since you know neither player will be drawing any additional cards. Since the puzzle doesn't explicitly say that you must win this turn, I think they are perfectly valid solutions.

    Finally, here are notes for your solution to #3:

    (I am assume the picture shown is incorrect otherwise it is still Garrosh's turn and he can kill you off before you get to try then) (Good catch. This could be a bug with the turn indicator or some Photoshopping that wasn't done quite right. In any case, the green borders around your minion and cards indicate actions you can take, so it must be your turn as the problem indicates.)

    Turn 1:

    Use Voodoo Doctor to heal Jaina Proudmoore by 2

    Use Kobold Geomancer

    Use Ancient Mage (you now have a total of 4+ 3 spell power) (Kobold has +1 and Ancient Mage gives +1 to each adjacent minion (2), but doesn't give any Spell Damage himself.)

    Use Arcane Explosion ( this kill's all Garrosh's minion's and reduce's his armor by 5 and 1 dmg to garrosh through Fatigue) (At only +3 Spell Damage, this isn't enough to kill the Assassin. In addition, Arcane Explosion only damages minions and will not hurt Garrosh. He will take Fatigue damage, though. In fact, he should take 2 Fatigue damage since last turn he played the Coldlight Oracle and only had one card left in his deck--the Assassin--so would have taken 1 Fatigue damage already from that draw. Fatigue damage ramps up by 1 each time you can't draw a card, dealing 1 damage the first time, 2 the second, 3 the third, etc.)

    Garrosh's Turn:

    (Since the Assassin is still alive at this point, he can just attack and kill you. There is no way to get to +4 Spell Damage, and Arcane Explosion is the only way you could possibly do damage to the Assassin, so in order to solve this puzzle you really do have to kill Garrosh before he can attack on his next turn.)

    Garrosh uses "Hero power: Armor Up" gaining +2 armor

    Garrosh uses Gorehowl to attack and kill Ancient Mage dealing 6 damage and loosing 2 armor

    Gorehowl now only deals 5 damage

    (Jaina Proudmoore now has 7 Health and Garrosh 20 Health and 1 armor)

    Turn 2:

    Voodoo DoctorKobold Geomancer all attack Garrosh Dealing 3 damage and removing his remaining armor

    Gorehowl only deals 3 damage now since but Voodoo DoctorKobold Geomancer died

    Use Frostbolt on Garrosh Dealing 4 damage and freezing garrosh you take 3 damage

    Use Ice Lance twice dealing a total of 10 damage you take 2 damage

    Use Fireball dealing 9 damage

    (Jaina Proudmoore now has 3 Health and Garrosh 0 Health you win)

    tip: even if he had not died, he has no card's left and Mana Wyrm now has 6 attack.

    comment: the reason garrosh would attack and kill Ancient Mage was since he could not kill the mage and assuming if then you would have had Ancient Mage + Mana Wyrm left to sacrifice and thereby removing his weapon leaving him defenseless anyways vs Jaina Proudmoore that would have 1 health instead at that point. no-matter who he had attacked he would have lost

    So, you were definitely on the right track for viable solutions with the first two, but you need to figure out how to kill Garrosh before he can retaliate in order to solve the 3rd puzzle.

    Hopefully these comments help you to understand some of the trickier game mechanics and best of luck getting into the beta so you can get some hands-on experience!

     

    Posted in: News
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from cryofdeath01 »

    ok it seems to work now, but how can i view the logs content?

    Go here: http://www.hearthlog.com/profile (you'll need to login with a Google account) and there will be a randomly generated Upload Key for you there. Copy that value and then right-click on the "Hearth Log" icon in your system tray and select "Upload Key..." and paste the value there. Once you hit OK the program should upload any log files it has already recorded and future logs will be uploaded once your game is complete.

    You can then view a list of those logs, see your stats, view the replays, etc from your user page. By default the site generates a random username for you, but you can pick whatever you want on the profile page (click the little pencil button). So, if you change your username to "cryofdeath01" then your game logs will show up at http://www.hearthlog.com/u/cryofdeath01

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from cryofdeath01 »

    Here my connections, played one game

    Thanks! Looks like the EU client is still using port 1119 for the game data.

    I've updated the logging program to handle this and cleaned up a couple other issues. You can grab the latest version here: https://github.com/chippydip/HearthLog/releases

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from cryofdeath01»

    01:24:36: 1381361076522575000 [192.168.178.20]:24064->[12.129.242.24]:3724 logging
    01:24:36: pairing [12.129.242.24]:3724->[192.168.178.20]:24064 with [192.168.178.20]:24064->[12.129.242.24]:3724
    01:24:36: [192.168.178.20]:24064->[12.129.242.24]:3724 canceling log (bad header: 1414745936, 1970482976)
    01:32:09: 1381361529351943000 [192.168.178.20]:24474->[12.129.242.24]:3724 logging
    01:32:09: pairing [12.129.242.24]:3724->[192.168.178.20]:24474 with [192.168.178.20]:24474->[12.129.242.24]:3724
    01:32:09: [192.168.178.20]:24474->[12.129.242.24]:3724 canceling log (bad header: 1414745936, 1970482976)

    This is just your client uploading an error report to Blizzard. The "bad header" is the start of an HTTP request ("POST /su").

    00:13:36: [195.12.236.244]:3724->[192.168.178.20]:17595 dropping 23 bytes (no SYN)

    00:13:36: [192.168.178.20]:17595->[195.12.236.244]:3724 dropping 24 bytes (no SYN)
    00:13:37: [192.168.178.20]:17595->[195.12.236.244]:3724 dropping 4 bytes (no SYN)
    00:13:37: [195.12.236.244]:3724->[192.168.178.20]:17595 dropping 8 bytes (no SYN)
    00:13:38: [192.168.178.20]:17595->[195.12.236.244]:3724 dropping 4 bytes (no SYN)
    00:13:38: [192.168.178.20]:17595->[195.12.236.244]:3724 dropping 571 bytes (no SYN)
    00:13:38: [192.168.178.20]:17595->[195.12.236.244]:3724 dropping 460 bytes (no SYN)
    00:13:38: [195.12.236.244]:3724->[192.168.178.20]:17595 dropping 7 bytes (no SYN)
    00:13:40: [195.12.236.244]:3724->[192.168.178.20]:17595 dropping 81 bytes (no SYN)
    00:13:43: [192.168.178.20]:17595->[195.12.236.244]:3724 dropping 8 bytes (no SYN)

    This happens when the program sees traffic on the port it's listening to that's either part of a connection that was started before the logging program was, or is part of a connection that it decided to drop (I should probably fix the latter case). It doesn't necessarily mean that anything is going wrong. You should double-check by looking in "C:\Users\<Username>\AppData\Roaming\Hearth Log\" to see if there is anything in the "Logged" or "Uploaded" folders.

    That said, it's entirely possible that the EU client is communicating on a different port. Prior to the most recent patch the US version was using port 1119, but that was changed to 3724 now that they are running on the real servers I guess. If you'd like to check what ports the EU client is using for me you can do that with this program: http://www.microsoft.com/en-us/download/details.aspx?id=4865

    When you start the program you'll need to select "New capture tab" from the start page. Then hit the "Start" button on the toolbar at the top. Then go ahead and launch Hearthstone, play a game, and then exit. Back in Network Monitor hit the "Stop" button. You should see a bunch of programs listed in the panel on the left. Expand everything in the Hearthstone.exe section and you should see something like this:

    If you could take a screenshot like what I did above (or write down the information) and get it to me I should be able to tell if the EU client is using a different port.

    Then i tryed to debug your projekt but i got always a lot of errors cause visual studio wants to include stuff from a /wx/ folder that was not uploaded with your projekt, maybe you write down where i get these files and how could i get it to work. i got no clue about cpp ;)

    The project required wxWidget 2.9.5 to build. You can grab the files here: http://sourceforge.net/projects/wxwindows/files/2.9.5/binaries/ You'll need wxWidgets-2.9.5_Headers.7z and wxMSW-2.9.5_vc110_Dev.7z Unzip the contents of both files somewhere and then you'll need to set a $WXWIN environment variable to point to the location where you unzipped those files. After that, you should be able to compile the program.

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from Heaviest_Flow »

    Interesting...
    So, potentially, one could analyze the packets and create a program to send any packet you wish. I'd like to mess around with it, but would probably get banned, and maybe worse for doing so.

    It intrigues the hell out of me though.

    WnPCap (and libpcap) do allow you to send arbitrary packets over the network. However, this isn't very useful for a TCP connection since it will result in bogus sequence number which the other end should detect, causing the connection to be reset.

    You could use a proxy to make this work, but I think the game protocol is sufficiently secure to make this not very useful. At the start of each turn and again after each action you take the server sends you a list of actions you can take. When you perform one of those actions in-game it then sends a reply to the server stating which action you took. So, if you tried to do something not on the list of available actions, it would be trivial to detect on the server. The most you could probably do is send additional card hover messages and perhaps additional emotes (potentially being able to spam them).

    Posted in: General Discussion
  • 1

    posted a message on Hearth Log [Experimental]

    Quote from princessbowl»

    I think this is a really neat idea, but I have few concerns. First-- and surprised nobody's mentioned this yet-- pretty sure packet sniffing is against the ToS, which means Blizzard is well within their rights to start banning people if this catches on at all.

    The official Hearthstone site links to Blizzard's generic Battle.net Terms of Use. Section 12.C. "No Data Mining" is the relevant section:

    You agree that you will not (a) obtain or attempt to obtain any information from the Service or any Game using any method not expressly permitted by Blizzard; (b) intercept, examine or otherwise observe any proprietary communications protocol used by a Game client or the Service, whether through the use of a network analyzer, packet sniffer or other device; (c) use any third-party software to collect information from or through a Game client or the Service, including without limitation information about your character, any Account registered to you, virtual items, other players, or other Game data.

    So, yes, this is technically against the ToS, but so are any other programs that extract data from any Blizzard game or service in any way. Basically it's designed to allow them to ban people for basically any reason without having to justify it. Realistically, though, I believe they only use that power for things they consider to be exploiting the game and/or things that may impact the experience of other players.

    I obviously can't say that it's impossible for people to get banned for using this program (or another program like the screen scraping one to log your wins and losses that somebody else has been working on), but I think it's unlikely to happen. If Blizzard does decide that this is something they want to actively prohibit, then I would hope they would contact me first so I could shut the site down or make any required changes to appease them before they would start going after users.

    On that note, you will probably have some trouble if they start using a secure connection for game data; though I honestly have no idea how likely that is.

    Right now the game uses two different connections. The "main" connection to Battle.net is encrypted. It's used to log you in and for all communication that isn't part of an actual game. This includes the store, friends list, deck building, play mode selection, etc. While it would technically be possible to decrypt this connection, it would require scanning the Hearthstone.exe's memory when the connection is being setup to read out the randomly generated session key. Even at that, it would still be very difficult to accomplish and is something I will absolutely not attempt to do as it would most certainly be a bannable offense.

    Once an opponent has been found for a game, a new connection is opened that is used only for that specific game and then closed when the game finishes. This connection is unencrypted and handles all the updates that pertain to a specific game. My program captures the entire contents of this stream and just adds a simple header with the current game version as well as timestamps for each game message that it sees and compresses that data to save on your computer as well as upload to the server.

    Because I don't have access to any of the messages in the "main" connection I actually miss out on some useful information. I have no way of knowing what play mode the log is for (I can make some assumptions if a deck contains more than 2 copies of a card or has a golden version of a card, but there's no way to tell ranked vs unranked). I can't tell what your full deck was going into the game--only cards that you draw are revealed in the log (though, it may be possible to piece together the full deck if it is used several times in a row). And I can't tell what the battle tags of either player are.

    This "game" connection could potentially be encrypted in the future, but I don't think it's very likely. The "main" connection is handled by Blizzard's standard battle.net.dll (which is written in C++) while the "game" connection is handled by the Unity game engine (which runs C#). In order to add encryption they would have to re-implement their encryption code in C# (or setup a different method) and even then it would be trivial to see how the encryption is being handled since the C# code is very easy to disassemble. They could still do it in a way that would require somebody to hook into the Hearthstone.exe app to read a random seed value, but again, it would be much easier for a malicious user to perform those hooks into the C# code. Overall, I think they are much better served just making sure there is no critical info in the unencrypted stream.

    Lastly, while this is "open source," I took a quick glance around the client code and it looks like it just sends all the packet data unparsed to upload servlet.  I think the most interesting and useful part of your code is your packet parser-- any chance you might make that available?

    The point of open sourcing the logger is mostly to allow people to review the code if they are concerned that I might be trying to steal their battle.net accounts or something. I intentionally left the parsing for the server to handle because I've put a lot of work into this site so far and don't want to see people just take that and setup a similar site based on all my hard work.

    That said, I don't mind talking in general about how the log messages work and such, and if there are useful features that I could expose through and API for other people to use I'd definitely be open to setting those sorts of things up (suggestions welcome).

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Quote from HS_Zveno »

    Chippy, I have issues setting up the log.  I can't open the .exe file, every time I get an error "The application was unable to start correctly (0xc00007b)." 

    What can I do to fix this?

    Are you running 32-bit windows? I just realized that two of the dlls included in the download are 64-bit versions.

    Edit: I just uploaded a new zip file with the 32-bit dlls. You should be able to just re-download from here: https://github.com/chippydip/HearthLog/releases/tag/v0.1

    If that doesn't work, let me know and I'll see if I can do a little more troubleshooting, in which case any additional info you can provide about your system would be helpful.

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Update (10/8):

    I've added a visual replay feature in addition to the text logs. Here's an example: http://www.hearthlog.com/u/chippydip/1381024043/replay#1 (you can use the left and right arrow keys or the buttons at the top to step through the game).

    Posted in: General Discussion
  • 0

    posted a message on Hearth Log [Experimental]

    Update:

    User pages now have a nicer list of recent games as well as an overall Win-Loss record, and Win-Loss records while playing each class and while playing against each class. Example: http://www.hearthlog.com/u/chippydip

    The source code for the logger is also now available on github if anybody wants to take a look: https://github.com/chippydip/HearthLog

    More to come!

    Posted in: General Discussion
  • 1

    posted a message on Card Rewards for Leveling Up Your Heroes

    They added new tags to the cards in this patch with messages for how to earn normal and golden versions of cards that are earnable.

    For example, you get the golden Core Hound at Hunter level 50 apparently (http://www.hearthlog.com/e/CS2_201/Core%20Hound). Another example is Animal Companion which is unlocked at level 2 with the golden version at level 40 (http://www.hearthlog.com/e/NEW1_031/Animal%20Companion).

    From those descriptions it looks like you'll get 2x golden copies at the same time, just like with normal versions.

    Posted in: General Discussion
  • To post a comment, please login or register a new account.