BNETDocs
pvpgn-dev
Archived channel for PvPGN development. For current discussion see #botdev.
1,486 messages
Caaaaarrrrlll 20-Feb-18 02:40 PM
here you go @cen and @relesgoe πŸ˜„
cen 20-Feb-18 02:40 PM
can we get harpy on discord?
Caaaaarrrrlll 20-Feb-18 02:40 PM
yeah man, invite him
discord is open to all
cen 21-Feb-18 04:45 PM
@relesgoe is this https://github.com/pvpgn/pvpgn-server/blob/develop/conf/versioncheck.json.in exact copy of old config and can be used as starting point for converter or should I parse old one directly?
pvpgn-server - Next generation of PvPGN server
and, can I determin versionbyte from major version and special cases be handled by hand after ? (edited)
relesgoe 21-Feb-18 04:50 PM
@cen well the old config wasn't in json format so it isn't an exact copy. Xpeh wrote a script that outputted the file you linked to, so it's up to you to trust what he posted (I do). Why would you want to determine the versionbyte from the major version if entries already provide the versionbyte?
cen 21-Feb-18 04:51 PM
nevermind I see now
this is considered versionbyte: 0x0000001c
is it ok to truncate it tho?
cen 21-Feb-18 05:00 PM
I think I'll also rework it a bit, I dont like having actual values as attributes, ex: instead of "WAR3": it should be "games": [ "game":"WAR3", architectures: { "type: IX86] .. etc
it's easier to parse into actual programming objects if you always have key: value and key is never a value
you can map it directly in a c++ object with known attribute names this way
you probably shouldnt even use a direct json parser but a serializer
I posted a POC a few months ago (edited)
so versioncheck.json -> deserialize -> c++ object (edited)
I guess you can use a manual json processor but an object should be the main in-memory representation on the end of the day (edited)
relesgoe 21-Feb-18 05:07 PM
The version byte is one byte, so it should be safe to truncate to 4 characters (including the "0x"). Can you post a sample in the format that you envision this in?
cen 21-Feb-18 05:07 PM
one more thing.. in json we lose the old FAQ header so that either needs to be hacked into json string or an additional file like versioncheck.conf.md
I guess in yaml it could be kept since it supports one line comments
relesgoe 21-Feb-18 05:08 PM
Yes I will add a markdown document to the docs/ directory
Vector 21-Feb-18 11:43 PM
i must say
relesgoe 21-Feb-18 11:43 PM
Chickenbutt
Vector 21-Feb-18 11:43 PM
it's interesting being in the same discord as the devs who work on a program that i used to fiddle with years back
never expected that
relesgoe 21-Feb-18 11:43 PM
We're not the OG devs
We forked pvpgn
Vector 21-Feb-18 11:43 PM
when did you guys take over?
oh
err
when did the fork start?
Davnit 21-Feb-18 11:44 PM
so what does that say about me being here
Vector 21-Feb-18 11:44 PM
@Davnit we've had a complicated relationship... literally lol
relesgoe 21-Feb-18 11:44 PM
Idk when the fork started, maybe 2012 or 2013
I know the last commit for the official pvpgn repository was in 2011
Vector 21-Feb-18 11:45 PM
ok i'd say i messed around with it years earlier
maybe 2008 2009 somewhere around there
relesgoe 22-Feb-18 12:32 AM
@Caaaaarrrrlll get harpywar in here
Caaaaarrrrlll 22-Feb-18 12:51 AM
I don't have a way to get a hold of him @relesgoe
relesgoe 22-Feb-18 12:52 AM
He already joined this discord, idk how to invite him to the channel
@Caaaaarrrrlll
Caaaaarrrrlll 22-Feb-18 12:54 AM
Oh he has to have the role assigned
Done @HarpyWar
cen 22-Feb-18 01:23 AM
hard to call myself a pvpgn dev, more like an occasional contributor. I just have a big stake in it since I run a server.
Caaaaarrrrlll 22-Feb-18 01:24 AM
your role is pvpgn contributor, is it not? (edited)
cen 22-Feb-18 01:25 AM
yeah, I was responding to Vector who made it sound like we are some uber developers πŸ˜›
HarpyWar 22-Feb-18 01:37 AM
hi all great pvpgn stuff!
πŸ’― 2
lets make pvpgn great again
upvote 1
Caaaaarrrrlll 22-Feb-18 12:52 PM
bncsutil - The Classic Battle.netβ„’ client library
I know you packaged it into your rpm repos
would be lovely if you could share that so we can build it with jenkins in the future
cen 22-Feb-18 01:50 PM
hmm I guess it would be nice if you could get deb and rpm on every build from ci automagically. but can your jenkins be somehow integrted with github so people could actually fetch the results in some way?
Caaaaarrrrlll 22-Feb-18 01:52 PM
it's already integrated with github
and it posts statuses to bnetdocs-web's repo
cen 22-Feb-18 01:53 PM
could you download the resulting rpm tho? like Koji?
Caaaaarrrrlll 22-Feb-18 01:53 PM
hmmm
there's a thing called build artifacts in jenkins, i've never used it before
relesgoe 22-Feb-18 01:54 PM
Those are the binaries right?
cen 22-Feb-18 01:54 PM
I can prepare a bash script that build everything, but if that is not accessible to anyone it's kind of useless
Caaaaarrrrlll 22-Feb-18 01:54 PM
I think you were fair in saying jenkins is overdoing it since bncsutil doesn't get updates that often
cen 22-Feb-18 01:56 PM
previous commit was in june, and I dont see many future commits in the pipeline so yeah..
cen 22-Feb-18 04:43 PM
@relesgoe I believe there was a talk about how to specify which versioncheck entries are enabled? (edited)
relesgoe 22-Feb-18 04:45 PM
There's already a config option to specify which clients are allowed
Is it really necessary to have an option on a per entry basis?
Older clients connecting to a pvpgn server should be asked to upgrade to whatever version the server offers
But I could see the need for specifying exactly which version is the maxium so that newer clients will be asked to downgrade
cen 22-Feb-18 04:47 PM
if I want to support only w3 1.28 I need to delete all entries in old file right now (edited)
there is no other mechanism afaik
relesgoe 22-Feb-18 04:53 PM
Okay I can add an option in bnetd.conf
cen 22-Feb-18 04:55 PM
something like array of game tags in bnetd.conf would be ok I think. allowed_version_tags=W3XP_1285,W3XP_1282 (edited)
relesgoe 22-Feb-18 04:56 PM
Sounds good
Have you made progress on the versioncheck file yet?
cen 22-Feb-18 04:56 PM
yes, working on it rigt now
relesgoe 22-Feb-18 04:56 PM
upvote
cen 22-Feb-18 05:11 PM
just need to solve this dilemma first, what do you think of this modification? https://pastebin.com/cWhBT9Ns basically, yours allows direct access by key while this one requires looping but has fixed attribute names which means it can be mapped into a class more easily. also, I think it might be easier to locate a specific client in it since you don't have to do this type of code: if (client=="WAR3") { auto entry = versioncheck.WAR3; } else if (client="War3X") { auto entry = versioncheck.War3X; } instead it is something like: for (auto e in versioncheck) { if (client==e.name) {auto entry = e;}
your call since you are the one implementing it
relesgoe 22-Feb-18 05:14 PM
It actually doesn't matter because I can already loop through the client strings: https://github.com/pvpgn/pvpgn-server/blob/develop/src/bnetd/versioncheck.cpp#L100-L171
pvpgn-server - Next generation of PvPGN server
cen 22-Feb-18 05:20 PM
ok I see, you just dump them in a list on the end
relesgoe 22-Feb-18 05:21 PM
Yeah
OneMeanDragon 22-Feb-18 05:32 PM
whats difficult in reading W3XP?
or WAR3
relesgoe 22-Feb-18 05:48 PM
@OneMeanDragon I think cen was under the impression that I had to write code to individually select each client from the file
cen 22-Feb-18 06:16 PM
I wrongly assumed that you would map json to exact same representation on c++ side but since it gets flattened it does not matter at all what I was asking. anyway, gn for now, I'll have this wrapped by tomorrow
relesgoe 22-Feb-18 06:19 PM
Yeah it'd make more sense to throw a bunch of C++ objects into a single container that allows a fast search algorithm (edited)
OneMeanDragon 22-Feb-18 06:58 PM
yea i think i read that to fast anyways lol
cen 23-Feb-18 01:42 PM
@relesgoe attempt #1 (edited)
looks fine to me, let me know
relesgoe 25-Feb-18 03:22 PM
@cen i'm not really liking the format
Caaaaarrrrlll 25-Feb-18 03:23 PM
didn't @relesgoe or @cen want a new pvpgn tracker?
I remember talk of it
I could throw one together
relesgoe 25-Feb-18 03:23 PM
@Caaaaarrrrlll yeah I mentioned it
there are no pvpgn trackers that support https
Caaaaarrrrlll 25-Feb-18 03:24 PM
gotcha
I'm guessing no modification to the udp datagram pvpgn sends?
It's fine if not
relesgoe 25-Feb-18 03:24 PM
well it'd make all the other trackers incompatible
Caaaaarrrrlll 25-Feb-18 03:25 PM
Just trying to wrap my head around the kind of infrastructure/app code I'd need.
The current behavior of the tracker is such that a pvpgn server has to keep sending a udp datagram otherwise it gets delisted after a period of time. This means to me that I will likely need a cache store.
relesgoe 25-Feb-18 03:26 PM
i thought a database would have been used
@cen I prefer the bare bones style json that I posted at https://github.com/pvpgn/pvpgn-server/issues/336#issuecomment-367079713 I feel that it's unnecessary for something like "name":"W3XP" to exist since I don't need to select name itself, I just loop through everything. For the reader, it should be obvious what W3XP is
First results: https://gist.github.com/xpeh-owns/881f040050dd4a4c89cbd34831eccd11 Order of appearence? Currently it's 'WAR3', 'W3XP', 'STAR', 'SEXP', 'W2BN', 'DRTL', 'D2XP', 'D2DV'. Newer versions...
cen 25-Feb-18 04:30 PM
it just maps nicely into OOP this way but it doesn't make much of a difference for this specific config since it is mostly static. I'll have a fix by tomorrow probably
upvote 1
cen 26-Feb-18 02:12 PM
relesgoe 26-Feb-18 02:15 PM
Can you replace "versions" with "entries"
After that, I think the file will be fine
cen 26-Feb-18 02:19 PM
relesgoe 26-Feb-18 02:21 PM
Looks good
cen 26-Feb-18 02:22 PM
after this, time to rework bnetd.conf
relesgoe 26-Feb-18 02:25 PM
I was planning on getting some things from this issue done: https://github.com/pvpgn/pvpgn-server/issues/329
Hello, I'm just a player of Median XL, and aahz the server admin from the MXL community told me, I'd best write down my suggestions here. First of all, I want to say thank you for updating and impr...
But I guess I can put bnetd.conf afterwards
cen 26-Feb-18 02:27 PM
I guess you can go for the easy tasks but at least from my experience, clans are so dead it's not even funny
anyway, I can prepare a json sample for bnetd.conf in the meantime
and maybe some loader code
relesgoe 26-Feb-18 02:28 PM
The main battle is rewriting in modern C++
cen 26-Feb-18 02:28 PM
oh yeah.. true.
relesgoe 26-Feb-18 02:29 PM
But if you know modern C++, perhaps you could form a uml diagram for a class to replace the current code
cen 26-Feb-18 02:29 PM
truth be told, if we can't make some kind of automated CI testing for pvpgn to at least test login, game creation and some channel stuff I am not sure we can even start this task
because things will break 100%
and I am not sure manual testing will do
even some of your deleaker fixes which seemed innocent broke PG for example
so I am scared to touch it (edited)
also, before modern c++ we need to do STL first, like strings and vectors..
that's probably the first task
and it will be major PITA
relesgoe 26-Feb-18 02:33 PM
The problem with how I broke PG was because modern C++ was used
Wasn't used*
It wouldn't have happened in modern C++ because I wouldn't need to worry about manually freeing memory
I can add testing to the versioncheck system though
newby 26-Feb-18 02:37 PM
that all sounds daunting
this 1
cen 26-Feb-18 02:37 PM
I wonder if it would be possible to automate the game itself (like w3) to automatically perform some testing
perhaps with hotkeys
and a key typer
I tried to implement autologin once in our qt client and it kinda worked
relesgoe 26-Feb-18 02:39 PM
I think it'd be more easier to create packets in memory that a W3 client would have sent, and pass it to pvpgn functions that handle the packet
cen 26-Feb-18 02:39 PM
that also, as long as conversation is not dynamic
and perhaps some bnetdocs folks could help with such a tester
we have like 10 bot developers here or w/e πŸ˜„
you could write bot tests for all the channel stuff, clan stuff and login stuff (through bncsutil)
as for games, I guess we could hack up w3 client to join a quick game
and ghost could be used to host one
so you have pretty much everything covered
Ribose 26-Feb-18 02:42 PM
i don't know any bot devs
wat 1
cen 26-Feb-18 02:43 PM
like bnet chat bots? I read about this every day in #town-square
newby 26-Feb-18 02:44 PM
lol
OneMeanDragon 26-Feb-18 04:38 PM
not deleting anything made through "new" is still bad in c
newby 26-Feb-18 04:39 PM
yes
well c++, but yeah, who the fuck allocates memory and doesn't clear it?
goddamn java devs
i remember chastising some dev at my first gig over a "patched memory leak" where they just did ptr = NULL; i had to explain, as na intern, why that ws wrong
lol
Davnit 26-Feb-18 04:40 PM
at one point i almost wrote a thing to test bnls servers
OneMeanDragon 26-Feb-18 04:40 PM
they probably looking at as its only 32bits on the memory what could possibly go wrong
relesgoe 26-Feb-18 04:41 PM
keep this pvpgn related please
OneMeanDragon 26-Feb-18 04:42 PM
on a side note some time about 2 years back i logged diablo hellfire onto pvpgn
as for where my edits went i have noidea
Ribose 26-Feb-18 06:06 PM
my message was a joke, sorry
xpeh 01-Mar-18 03:07 AM
@relesgoe what's the idea of changing versioncheck structure? It's a config file, and config files are made for users that edit it. You can do transformations after you have loaded it. It should not be that hard, right?
@cen "one more thing.. in json we lose the old FAQ header so that either needs to be hacked into json string or an additional file like versioncheck.conf.md"
I already mentioned json5 or hjson. Both support comments and hex integer literals
Dunno when I read the answers but I'm subscribed to guthub issues
Is someone interested to rewrite pvpgn into java or c#? pvpgn is almost pure C, it's as old as mammuth's shit. It could be possible to generate parser from format description. There will be ORM, no segfaults while parsing packets - one of the main features of pvpgn.
cen 01-Mar-18 10:59 AM
versioncheck is not really a config file per se, it's static. it's a bit more structured, no groundbreaking changes
Ribose 01-Mar-18 11:00 AM
god i'd want it in C# as well
but rewriting a whole project like that sounds ridiculous
cen 01-Mar-18 11:01 AM
yeah, let's keep this chat ridiculous ideas free zone, but if someone wants to rewrite it, go ahead and have at it πŸ˜„ (edited)
relesgoe 01-Mar-18 11:28 AM
@xpeh what do you mean by versioncheck structure? If you mean changing the format of the file, there was a github issue that proposed making the config files more uniformal, and json was the chosen format.
HarpyWar 02-Mar-18 12:54 PM
@relesgoe what's about https://github.com/pvpgn/pvpgn-server/releases? Since we have master branch shouldn't these archives be updated?
pvpgn-server - Next generation of PvPGN server
relesgoe 02-Mar-18 12:56 PM
@@HarpyWar I haven't put aside time to make another release
HarpyWar 02-Mar-18 12:57 PM
Do you mean description of changes or archves with binaries?
relesgoe 02-Mar-18 12:59 PM
I need to change the version in the source code, compile and archive binaries for all storage types, and then write the changelog
HarpyWar 02-Mar-18 01:01 PM
archives could be taken from https://pvpgn.pro (appveyor), no need to archive them anew, or at least unpack and pack with 7z if you want
relesgoe 02-Mar-18 01:03 PM
Are those binaries compiled with maximum optimizations?
HarpyWar 02-Mar-18 01:04 PM
They are compiled with Magic Builder, if you tell which optimizations should be applied then I can update it
cen 03-Mar-18 04:58 PM
looks like w3l will break heavily in 1.29
no more game.dll to e found
merged into exe apparently (edited)
Davnit 03-Mar-18 04:59 PM
yea its getting the same treatment as d2 did a few updates ago
cen 03-Mar-18 04:59 PM
looks like there will be some dirty work to do..
I also checked bncsutil code, it expects exe, storm and game
however, doesnt seem to be used anywhere
just passed into the function
so I am a bit confused right now
Davnit 03-Mar-18 05:01 PM
BNCSUtil should have a function that lets you specify an array of files as well, so you'd just need to make that array be only the exe
cen 03-Mar-18 05:02 PM
well, as far as I can see I can also just touch the files and name them properly
would still work
Davnit 03-Mar-18 05:02 PM
MEXP(int) checkRevision(const char* formula, const char* files[], int numFiles, int mpqNumber, unsigned long* checksum)
cen 03-Mar-18 05:26 PM
nvm, they get mapped into the formula
if they kept the mechanics the same you can probably just pass the one exe and it all still works
will need to do some testing this week
Davnit 03-Mar-18 05:30 PM
thats what the fix was for d2 so it'd most likely work for this too
cen 03-Mar-18 05:30 PM
good to hear
Ribose 03-Mar-18 05:35 PM
yeah that should be fine client-side
cen 03-Mar-18 05:41 PM
hmm makes me wonder, what is the point of this glorified cheksum? is this documented somewhere? someone at blizz had too much time or is there a higher purpose for dynamic checksuming?
Caaaaarrrrlll 06-Mar-18 07:16 PM
when one of you get a chance, verify if this is the private key to the war3 signature in sid_auth_info
00000008 ff 50 c1 00 02 00 00 00 b5 4b 26 bf 4f 1d 00 00 .P...... .K&.O... 00000018 00 6f 27 88 82 b8 d1 01 76 65 72 2d 49 58 38 36 .o'..... ver-IX86 00000028 2d 30 2e 6d 70 71 00 41 3d 30 20 42 3d 30 20 43 -0.mpq.A =0 B=0 C 00000038 3d 30 20 34 20 41 3d 41 2b 53 20 43 3d 43 2b 41 =0 4 A=A +S C=C+A 00000048 00 4c 15 92 7a ec e8 39 db 1d 9d fb fb 18 d3 ab .L..z..9 ........ 00000058 c6 62 10 00 99 4b 50 0b ac 2b 16 d4 27 35 39 04 .b...KP. .+..'59. 00000068 c4 99 6b 41 b0 25 27 59 7e 4b ce a2 51 19 6f 73 ..kA.%'Y ~K..Q.os 00000078 45 df b7 06 6c 63 d0 0a 2f e7 d8 3f df 34 4f 8b E...lc.. /..?.4O. 00000088 37 19 7a bd 97 3f 1e 74 58 36 bf 93 61 5b eb 55 7.z..?.t X6..a[.U 00000098 ac 09 f5 cd c6 99 9d c3 20 1d 6b d5 09 7d 90 91 ........ .k..}.. 000000A8 b4 76 e5 04 57 19 22 d9 8c 3b 5b 22 bf d9 14 d8 .v..W.". .;[".... 000000B8 47 f0 fa d6 c2 13 e2 74 9f 35 65 1b 98 4e 81 79 G......t .5e..N.y 000000C8 29 )
seems to be the same value on 3 different useast servers right now, doesn't change. also getting a too new version check error from sid_auth_check
relesgoe 06-Mar-18 07:22 PM
WTF, someone tried to find the private key :0
@cen the checksum, the whole checkrevision system actually, is to verify that the client is a real client instead of a bot
@Caaaaarrrrlll actually which value am I supposed to start looking at?
Caaaaarrrrlll 06-Mar-18 07:23 PM
didn't try to find the private key, if this is it, I stumbled upon it
relesgoe 06-Mar-18 07:23 PM
That looks like a packet dump
Caaaaarrrrlll 06-Mar-18 07:24 PM
that's the 0x50 s>c packet
Davnit 06-Mar-18 07:24 PM
last 128 bytes
Caaaaarrrrlll 06-Mar-18 07:24 PM
useast servers 199.108.55.51-53 are spitting that out right now.
πŸ€” I wonder if I can find a uswest server that's doing it
relesgoe 06-Mar-18 07:26 PM
Why would they append the private key? It should be a signature
Caaaaarrrrlll 06-Mar-18 07:26 PM
should be
got any other ideas what else it may be? (edited)
relesgoe 06-Mar-18 07:26 PM
Plus wouldn't the private key be 512 bytes?
Caaaaarrrrlll 06-Mar-18 07:26 PM
it's supposed to change with the server's IP right?
relesgoe 06-Mar-18 07:27 PM
The signature is supposed to change
Caaaaarrrrlll 06-Mar-18 07:27 PM
I haven't done much reversing of the signature to know if its private key would be 512 or not
relesgoe 06-Mar-18 07:31 PM
The Blizzard Weak Digital Signature uses a 512-bit private key
I'd imagine the WC3 server signature uses the Blizzard Strong Digital Signature, therefore uses a longer bit key
The Blizzard Weak Digital Signature uses RSA cryptosystem to verify files for authenticity which helps prevent hackers from executing arbitrary code on a client's computer. Signatures are verified using Microsoft CryptoAPI which contains an imple...
upvote 1
πŸ‘ 1
Caaaaarrrrlll 06-Mar-18 07:35 PM
I'll shut up now
relesgoe 06-Mar-18 07:36 PM
Just saw that the Blizzard Strong Digital Signature uses a 2048-bit key
Caaaaarrrrlll 06-Mar-18 07:38 PM
you should write that up in a document on bnetdocs πŸ˜ƒ
relesgoe 06-Mar-18 07:38 PM
I could probably do it tonight
cen 07-Mar-18 02:09 AM
they probably just messed up something in preparation to roll out 1.29. Does server signature not changing help us in any way? (edited)
Streets have rumors that the AUTH_CHECK now somehow also involves the server IP, because connecting on localhost and forwarding with gproxy instantly disconnects (with nop patch in w3 client ip verification)
not sure this is connected tho
relesgoe 07-Mar-18 07:30 AM
It should be easy to check with wireshark
Davnit 07-Mar-18 07:53 AM
The signature verification from SID_AUTH_INFO uses the server IP, but it's done that for quite a while now
cen 07-Mar-18 11:05 AM
perhaps it's just bad patching then (w3l does it)
cen 10-Mar-18 03:31 PM
more info about gproxy and AUTH_CHECK issue. The facts so far found by h3rmit: 1. He patched the server IP check in client so client does not freak out. This used to work until 1.29 2. As soon as he sends AUTH_CHECK with gproxy, bnet disconnects him 3. He faked AUTH_INFO in gproxy to always send the same one to client (to prevent randomization of formulas etc) and compared AUTH_CHECK spewed by Wc3, the only difference between normal and gproxy is client token and hashed key data, HOWEVER, this also differs between regular runs. Do we know how client token is generated? Do we know what exactly gets hashed in key data? Server IP sneaks in somewhere? Any ideas welcome.
Caaaaarrrrlll 10-Mar-18 03:39 PM
As far as I know, the client token is a random integer from a standard library. The key hash contains both server and client tokens.
Davnit 10-Mar-18 03:44 PM
https://bnetdocs.org/packet/408/sid-auth-check that shows what the key hashes are
Contains the EXE Version and Hash as reported by CheckRevision() and CDKey values.
the only server related thing in the key hash is the server token but that's something it sends you not something you assume
server IP is only used by w3 to verify the signature returned in SID_AUTH_INFO (0x50) afaik
cen 10-Mar-18 04:04 PM
something about gproxy triggers bnet to drop the conn, and besides server Ip not sure what it would be. deeper investigation needed
btw, client token is increasing, definitely not random
if some botter can setup a bot to login every minute and log datetime with client token that could show us patterns
Davnit 10-Mar-18 04:06 PM
the client token is just some number that the client comes up with it doesn't matter what it is
some bots just send the same number every time, some use random numbers, doesn't matter as long as its the same for the whole connection
cen 10-Mar-18 04:12 PM
write it down folks, client token is GetTickCount() and nothing else
system uptime in ms
still doesnt answer previous thing tho
cen 10-Mar-18 05:18 PM
issue only occurs on PTR when gproxy is used so it must be the PTR that changed something. FWIW, what gproxy actually does: opens socket on localhost to which w3 connects to instead of battle.net, gproxy then proxies packets between bnet and wc3 transparently. anyway, I'll do some more research myself, even though this does not affect pvpgn in any way since we couldn't care less about IP verification, still, it could be a major blow to hostbot communities if this doesnt get fixed (edited)
relesgoe 10-Mar-18 06:31 PM
@cen so is gproxy a separate program or does it get injected into wc3?
cen 11-Mar-18 04:50 AM
seperate
relesgoe 11-Mar-18 02:06 PM
For clarity, you should post packet dumps
I think it'd help track down the issue
cen 11-Mar-18 03:50 PM
accept my friend request, I'll connect you to the guy
cen 11-Mar-18 04:11 PM
also have ptr installed, I'll be ready myself tomorrow 20-21 cet so we can tackle this head on if possible
relesgoe 12-Mar-18 01:37 PM
I won't be available at 20 cet
cen 12-Mar-18 01:40 PM
me neither (edited)
when will you be?
relesgoe 12-Mar-18 01:41 PM
23 cet
cen 12-Mar-18 01:41 PM
ok
I have full packet dump now
cya then
relesgoe 12-Mar-18 01:41 PM
Post it somewhere
cen 12-Mar-18 01:42 PM
last time I posted it somewhere that idiot guy in bnetp github posted google maps screenshot with my IP
anyway, I'll post it once I inspect iz πŸ˜› (edited)
Caaaaarrrrlll 12-Mar-18 01:53 PM
>last time I posted it somewhere that idiot guy in bnetp github posted google maps screenshot with my IP wut lol
cen 12-Mar-18 01:58 PM
I forked this repo some time ago to fix a weird problem I encountered in one of my dumps but never had the time to do it. I see the repo is active again so I am reporting it here also. bnftp_unknow...
here, xpeh posted twice screenshot of google maps with my ip geolocation, twice (now removed) (edited)
you can't make this shit up
yeah I know I just gave you my IP, no need to broadcast it
fucking idiots
in better news, w3lh misterious dev is alive once again https://github.com/w3lh/w3l/issues/10
W3 1.29 is currently available as PTR and is expected to be officially released in a month or so. There are major changes for w3l, especially game.dll is now part of a single .exe so current mechan...
Caaaaarrrrlll 12-Mar-18 02:03 PM
yo
you can get him in trouble
3. Conduct Restrictions While using GitHub, you agree that you will not under any circumstances: ... - violate the privacy of any third party, such as by posting another person's personal information without consent.
also since you're in the EU (yes?) you can also get github in trouble if they don't comply with the new EU privacy laws that were instated Jan 1 2018
All you gotta do is cite that clause from the ToS in your complaint here https://github.com/contact/report-abuse (edited)
You could even say he was harassing you
Ribose 01-Apr-18 01:27 PM
isn't there a way pvpgn can indicate to sue 3a?
you know, logon system byte in 0x50...
i'm pretty sure SB implements logon system changing via that, and would follow pvpgn's request without the need of a script if you request OLS
but nah, don't tell me pvpgn doesn't support even OLS...
relesgoe 06-Apr-18 03:16 PM
@cen did you say something?
cen 06-Apr-18 03:17 PM
C>S SID_AUTH_CHECK on left, right highlight is pvpgn log, bottom is versioncheck for 1.26
I am trying to connect with 1.26 and 1.28 at same time
1.28 works, 1.26 gives Invalid game version
Server sends calc challenge from 1.28 which already seems suspicious
then proclaims it can' find the version. do you spot anything?
if I recall correctly pvpgn does support multi version clients
relesgoe 06-Apr-18 03:23 PM
I will take a look at this later
What do you mean you're connecting with 1.26 and 1.28 at the same time?
cen 06-Apr-18 03:25 PM
I want to support two versions on same server (edited)
so 1.26 and 1.28 clients can connect
relesgoe 06-Apr-18 03:26 PM
Show me the versioncheck config for 1.28
cen 06-Apr-18 03:26 PM
# Warcraft III - TFT (Expansion) 1.28.5. "A=1239576727 C=1604096186 B=4198521212 4 A=A+S B=B-C C=C^A A=A+B" \ ver-IX86-1.mpq \ IX86 \ W3XP \ "Warcraft III.exe 07/07/17 20:15:59 562152" \ 0x0000001c \ 1.28.5.0 \ 0x60743fc9 \ W3XP_1285 # Warcraft III - ROC 1.28.5. "A=1239576727 C=1604096186 B=4198521212 4 A=A+S B=B-C C=C^A A=A+B" \ ver-IX86-1.mpq \ IX86 \ W3XP \ "Warcraft III.exe 07/07/17 20:15:59 562152" \ 0x0000001c \ 1.28.5.0 \ 0x60743fc9 \ WAR3_1285 # =================== WarCraft 3 Expansion Entries ================== # Warcraft III - TFT (Expansion) 1.26a # Note: this version check is sent in both FT and ROC mode "A=3845581634 B=880823580 C=1363937103 4 A=A-S B=B-C C=C-A A=A-B" \ IX86ver1.mpq \ IX86 \ W3XP \ "war3.exe 03/18/11 20:03:55 471040" \ 0x0000001a \ 1.26.0.1 \ 0xf2e7cec2 \ W3XP_126A
I noticed checksum for 1.26 in wireshark was different from pvpgn master so I changed it but it didn't help
relesgoe 06-Apr-18 03:27 PM
ROC 1.28.5 should use WAR3 as the client tag
I think
cen 06-Apr-18 03:28 PM
hmm right, I'll just delete roc since I dont need it
same. but again exe hash in wireshark dump is checksum=0x2fdaf027 (same in pvpgn log)
which is different from git
even if I change it it remains the same tho, so somehting else is not matching
it seems that since 1.28 is first on the list it determines to send 1.28: Apr 06 23:29:02 [debug] versioncheck_create: version check entry archtag=IX86, clienttag=W3XP Apr 06 23:29:02 [debug] _client_countryinfo109: [6] selected "ver-IX86-1.mpq" "A=1239576727 C=1604096186 B=4198521212 4 A=A+S B=B-C C=C^A A=A+B"
but then client sends 1.26
I wonder if that is the confusion
relesgoe 06-Apr-18 03:34 PM
Maybe
Idk
cen 06-Apr-18 03:34 PM
before SID_AUTH_CHECK pvpgn does not have enough info to determine what to send (edited)
so this is kinda weird logic
relesgoe 06-Apr-18 03:34 PM
I hope to finish rewriting the versioncheck code soon
cen 06-Apr-18 03:35 PM
I'll try to switch entries order in versioncheck and see what happens
relesgoe 06-Apr-18 03:35 PM
Good idea
cen 06-Apr-18 03:38 PM
damn.. ofc it fails.. it uses ABCD from 1.28 and checksum does not match
relesgoe 06-Apr-18 03:39 PM
Yeah you mentioned that earlier
cen 06-Apr-18 03:39 PM
now 1.28 stopped working πŸ˜›
expect a pull request over the weekend...
Apr 06 23:36:12 [debug] _client_countryinfo109: [6] COUNTRYINFO_109 packet tzbias=0xffffff88(-120) lcid=1060 langid=1060 arch="IX86" client="W3XP" versionid=0x0000001a gamelang="enUS" it seems to me that versionId could be used to determine correct W3XP entry if there is more than one (edited)
but it seems right now it just takes first
relesgoe 06-Apr-18 03:42 PM
It's not that simple
Which is why I asked you to write a script to produce a Jon version check config structured in a certain way
cen 06-Apr-18 03:43 PM
/* FIXME: randomize the selection if more than one match */ LOL
relesgoe 06-Apr-18 03:43 PM
The server needs to know what checkrevision file and equation to send with very little information
cen 06-Apr-18 03:44 PM
arch, client and versionId isn't enough?
relesgoe 06-Apr-18 03:45 PM
Different versions share the same versionid
cen 06-Apr-18 03:46 PM
so does you refactor tackle that in any way?
relesgoe 06-Apr-18 03:46 PM
Yes
cen 06-Apr-18 03:48 PM
tell me how, I need to apply this to existing codebase since we run SVN in production..
relesgoe 06-Apr-18 04:01 PM
The config file that you produced for me groups the checkrevision file and equation along with all of the entries with the same versionid.
The grouping is made possible because we're using Json instead of the previous config structure
cen 07-Apr-18 02:35 AM
makes sense. I can achieve the same thing by using same equations and change the checksums then
relesgoe 07-Apr-18 03:09 AM
The problem with doing that with the pvpgn in the repository is that pvpgn needs to cater to everyone. So if I try to update the checkrevision file, equation, and hash, I'd have to go back and do it for every version
So for you, it's easy. For general distribution, it's unrealistic
relesgoe 07-Apr-18 10:22 PM
@cen do you have knowledge of search algorithms?
actually, i mean time complexity
cen 08-Apr-18 02:29 AM
not much
I just wing it when such problem occur
cen 11-Apr-18 05:05 AM
is there anyone besides the misterious w3l developer who has knowledge of w3l code that could contribute? I sleep uneasy to rely on a single developer to add support for new patches, no ETA and probably at least a month of delay.
relesgoe 11-Apr-18 02:10 PM
well it's not easy to find someone proficient in reverse engineering to do this
why don't someone make an ip address spoofer?
spoof pvpgn's ip address as battle.net so that pvpgn can send the same server signature as battle.net
then translate battle.net's ip to pvpgn's actual ip somewhere else
idk if that would actually work or be feasible
it would involve hooking some winapi functions
i can sort of see it being possible
wc3 creates a socket to pvpgn -> intercept and pass through a custom socket that points to bnet -> war3 uses ip address from socket for server signature verification -> all future wc3 communication gets hijacked to point back to pvpgn server (edited)
this way, we can hook winapi and this would work for all versions of wc3
instead of overwriting certain instructions that belongs to wc3 memory
which i think is what w3l does
@Caaaaarrrrlll does this sound plausible?
Caaaaarrrrlll 11-Apr-18 02:52 PM
you could do it with local bgp on your local lan
but otherwise idk
cen 12-Apr-18 02:30 AM
spoofing IP is PITA
relesgoe 12-Apr-18 02:30 AM
not necessarily spoofing ip
just pass a different socket structure back
relesgoe 13-Apr-18 12:33 AM
https://gist.github.com/RElesgoe/adea8f20cef0f5d5480b94cf59ba1e28 @cen I'd like to use a container whose key will be a combination of 3 ints (the version byte, product id, and platform id) and whose value will be a combination of 2 std::strings (the checkrevision filename and equation)
Can you help me write something for this
cen 13-Apr-18 04:29 AM
I mean.. key and value should be a c++ class and then you use a std map
....or?
relesgoe 13-Apr-18 02:54 PM
I was hoping to avoid creating a class/struct for this but I guess I'll just do it
cen 14-Apr-18 03:58 AM
nah, you should EMBRACE the classes
c++ OOP all the way
relesgoe 22-Apr-18 06:27 PM
@cen can the wc3 exe be named anything when connecting to bnet or does bnet require it to have a certain filename?
Davnit 22-Apr-18 10:18 PM
afaik it can be named anything - the server completely ignores the exe info field in auth check which is the only time you tell it the name
relesgoe 22-Apr-18 10:20 PM
I don't think the server completely ignores the whole string
maybe at least the filesize is checked
Davnit 22-Apr-18 10:21 PM
nope all the server cares for is the 4 byte checksum
i've sent garbage in all the other fields
relesgoe 22-Apr-18 10:21 PM
interesting
what client were you connected as?
Davnit 22-Apr-18 10:22 PM
war3
i suppose i could test with others but i doubt it makes a difference
relesgoe 22-Apr-18 10:23 PM
for wc3, the file timestamp is variable unlike other clients
my theory is that bnet specifically disables exeinfo checks for wc3
Davnit 22-Apr-18 10:23 PM
it should just send the last modified time
relesgoe 22-Apr-18 10:24 PM
I meant that not everyone has the same timestamp
since the wc3 installer sets the timestamp to the time of installation, unlike other clients
since checkrevision existed before wc3, I expect the exeinfo string to be used for something
maybe the exeinfo string is being checked for other clients
just maybe specifically disabled for wc3
Davnit 22-Apr-18 10:26 PM
BNLS just returns the last modified time for all non-lockdown products (edited)
Ribose 22-Apr-18 10:26 PM
it's a hash for lockdown clients (d1, w2, sc)
and d2 is just like w3
relesgoe 22-Apr-18 10:26 PM
@Ribose can you clarify
Ribose 22-Apr-18 10:27 PM
well, i don't know how it's generated because i've not had to ever implement a solution, but it's very hash-like as opposed to a human readable string
could either be memory it checks or something, idk
relesgoe 22-Apr-18 10:28 PM
okay
so for non-lockdown products, the exeinfo field is completely ignored?
Ribose 22-Apr-18 10:29 PM
maybe? i wouldn't be surprised
they should be at least checking the exe name and size and validity of the string
Davnit 22-Apr-18 10:30 PM
at least for war3 they aren't
all that really matters is the checksum
if the file is a different size or something the checksum will be wrong
Ribose 22-Apr-18 10:31 PM
that is true
that's probably why they don't need those 3 values anymore
faster to just check the checksum is as expected, move on
no string parsing
relesgoe 22-Apr-18 10:32 PM
πŸ‘
relesgoe 23-Apr-18 12:15 AM
Use JSON format for configuration file (#181, #336) Currently won't accept a few versioncheck entries (#328), I'd like someone to check the hash for WC2 2.01 before I'll merge this pull...
I used bnrbot to connect to pvpgn with BW 1.16.1 and 1.15.3, pvpgn was able to select the correct versioncheck entry
Caaaaarrrrlll 23-Apr-18 12:28 AM
now I see why you wanted to use hashes instead of bnls
relesgoe 23-Apr-18 12:31 AM
@Caaaaarrrrlll I swear there were so many times that I had to pause development because of some roadblock, like bnrbot...
Caaaaarrrrlll 23-Apr-18 12:31 AM
i'm working on v3
wanna try it out? graphics are terrible but its functionality works
relesgoe 23-Apr-18 12:32 AM
i guess
you should also work on making high-dpi support
Caaaaarrrrlll 23-Apr-18 12:32 AM
hmm?
zoomable ui?
relesgoe 23-Apr-18 12:33 AM
Application windows are blurry in high-dpi displays
Caaaaarrrrlll 23-Apr-18 12:36 AM
I think there's a setting for that, not sure
Vector 23-Apr-18 12:36 AM
funny concept, pvpgn using bnls instead of manually performing checkrevision
Caaaaarrrrlll 23-Apr-18 12:37 AM
http://developer.xojo.com/hidpi-support - so my version of real studio is too old for this
relesgoe 23-Apr-18 12:38 AM
@Caaaaarrrrlll if you're working with raw winapi, I'm pretty sure it's more than a setting change
Caaaaarrrrlll 23-Apr-18 12:38 AM
nah
only raw winapi stuff going on is platform name/version, and bncsutil
relesgoe 23-Apr-18 12:38 AM
@Vector pvpgn isn't using bnls
Vector 23-Apr-18 12:39 AM
saying it's funny if it was
Caaaaarrrrlll 23-Apr-18 12:39 AM
it'd only work if the pvpgn server accepted the current versions that bnls produces
and yea nothing about DPI in the language reference for my version, either
it'd have to be a hack
Vector 23-Apr-18 12:40 AM
yeah that's right, there's no way to request results from earlier files
Caaaaarrrrlll 23-Apr-18 12:40 AM
sure there is
jbls doesn't support it
mine does
Vector 23-Apr-18 12:41 AM
did BNLS support it?
Caaaaarrrrlll 23-Apr-18 12:41 AM
not that I recall, but at the protocol level, you tell it your version anyway
so relesgoe
this v3 i'm working on
it's alpha at best
relesgoe 23-Apr-18 12:43 AM
ok
Caaaaarrrrlll 23-Apr-18 12:43 AM
lol I ran it on a different windows machine
immediately got an exception
rip.
relesgoe 23-Apr-18 12:45 AM
You should check for the existence of bncsutil.dll immediately
Caaaaarrrrlll 23-Apr-18 12:45 AM
I do.
relesgoe 23-Apr-18 12:45 AM
It doesn't appear so
Caaaaarrrrlll 23-Apr-18 12:45 AM
Oh, you mean for v2?
relesgoe 23-Apr-18 12:45 AM
v3
Caaaaarrrrlll 23-Apr-18 12:45 AM
v3 checks for it
relesgoe 23-Apr-18 12:45 AM
nope
Caaaaarrrrlll 23-Apr-18 12:45 AM
100% it does
w.SetProgress("Testing for BNCSUtil...", 0, 1) w.SetProgress("BNCSUtil version: " + Battlenet.bncsutilVersion(), 1, 1)
relesgoe 23-Apr-18 12:45 AM
v3 checks for an exported function in bncsutil
Caaaaarrrrlll 23-Apr-18 12:46 AM
hmmm
I should probably surround a try...catch on that
And display a friendlier error
relesgoe 23-Apr-18 12:47 AM
I even found in your logs: [2018-04-22 23:45:30] File does not exist [C:\Users\USER\AppData\Roaming\BNRBot.dat] [2018-04-22 23:45:30] File does not exist [C:\ProgramData\BNRBot.dat] [2018-04-22 23:45:30] File does not exist [C:\Users\USER\Desktop\BNRBot-v3\BNRBot.dat]
but nothing for bncsutil.dll
Caaaaarrrrlll 23-Apr-18 12:48 AM
The way it calls into BNCSUtil uses rb framework
I don't set a path
Ribose 23-Apr-18 12:48 AM
hmm I've actually seen that stretching of DPI thing in Windows 10 used only on stealthbot
when I accidentally set the display scale thing to 150%
fascinating
Caaaaarrrrlll 23-Apr-18 12:49 AM
for v3 I really want to merge the stuff in bncsutil into native code, but that's a mountain of work
mostly because rb doesn't have gmp or anything similar
so i'll have to do the larger ints myself
Ribose 23-Apr-18 12:49 AM
I'm reading the win32 stuff on DPI support
relesgoe 23-Apr-18 12:50 AM
rb framework is doing something wrong
Caaaaarrrrlll 23-Apr-18 12:50 AM
care to elaborate?
relesgoe 23-Apr-18 12:50 AM
as the bot checks for updates, it crashes
Caaaaarrrrlll 23-Apr-18 12:50 AM
oh geez
didn't even get handled by the exception handler 🀒
got handled upstream
Ribose 23-Apr-18 12:51 AM
if I could pull off something like DPI support in stealthbot, it would be an even greater magical spell than Unicode and locale agnostic support combined
and those were fucking complicated
just gotta subclass allthethings
Davnit 23-Apr-18 12:53 AM
pretty sure scaling is working fine in stealthbot
Ribose 23-Apr-18 12:53 AM
yeah I'm pretty sure it just bitmap scales
Davnit 23-Apr-18 12:54 AM
or windows is compensating - i have 150% on my main monitor and it transitions fine
Ribose 23-Apr-18 12:54 AM
like the whole window
yeah I'm almost certainly not going to do it, since windows 10 technically provides it already
relesgoe 23-Apr-18 12:56 AM
@Ribose you just made me remember the dpi compatibility setting
my eyes don't hurt from reading the pvpgn console anymore
Caaaaarrrrlll 23-Apr-18 12:57 AM
lol
I wonder if the CompositeWindow setting would help
cen 23-Apr-18 01:59 AM
yes, I do believe bnet actually ignores exeinfo
relesgoe 26-Apr-18 02:53 AM
@cen the pull request should be good to go. If you're willing to test it, I'll delay merging
cen 26-Apr-18 03:18 AM
I'll give it a go
relesgoe 28-Apr-18 06:17 PM
@cen I'm going to merge it
cen 29-Apr-18 06:28 AM
I have a holiday week so I'll tets it in the next 3 days for sure, but you can merge it anyway
Myst 29-Apr-18 08:57 PM
Does this server have any extra features for game stuff. For example, on brood war, joining a channel and being notified of players with similar stats and when they last played a game
Or
When a brood war game is finished , its stats/replay get sent to your pvpgn website profile
Or something of that nature
Little features like that are a big hit to users
A lot of the iccup players were very excited about that
Myst 29-Apr-18 09:50 PM
Another idea πŸ’‘
Still on the broodwar train of thought πŸš‚
Grabbing games from blizzard servers and broadcasting them on pvpgn. That increases the amount of games available for players ten fold
Very doable. Very doable. Since it’s all udp ip to ip for games
Ribose 29-Apr-18 09:52 PM
ok except you need broodwar emulation to do that
very impossible without it
as in all the websocket shit
Myst 29-Apr-18 09:53 PM
They have thst
Ribose 29-Apr-18 09:53 PM
you just can't do SID_GETADVLIST anymore
Myst 29-Apr-18 09:53 PM
Please talk packets
Ribose 29-Apr-18 09:54 PM
you can't get the list on official servers without at least one person's blizzard account logging in to the new SC stuff
so, have fun
Myst 29-Apr-18 09:55 PM
[PvP-Tower] on blizzard server funneling data to pvpgn server
Very doable
Ribose 29-Apr-18 09:55 PM
how?
Myst 29-Apr-18 09:55 PM
Post websocket
Ribose 29-Apr-18 09:55 PM
ok, show me and stop being vague.
Myst 29-Apr-18 10:02 PM
PvP-Tower on blizzard gathers games. Sends data to pvpgn server which then broadcasts the games to the game list. A player on pvpgn then opens up the gamelist on pvpgn and selects a game to join, Ie one on the blizz server. Pvpgn player then joins game and plays with blizz player
Very possible
Ribose 29-Apr-18 10:03 PM
no, i'm asking you how you'd actually do it
since the critical first step is not doable since we don't know how to emulate the new protocol enough
Myst 29-Apr-18 10:04 PM
That’s too much to type on phone
I was talking about historically
Ribose 29-Apr-18 10:05 PM
lol that's all you talk about
guess it was nothing i care about then
but if you actually have or found someone who emulated the new protocol, do tell
Myst 29-Apr-18 10:06 PM
They were sued and told to destroy their work
Ribose 29-Apr-18 10:06 PM
i know of people on here inspecting the websocket contents, but that's about it
then who cares
this idea cannot proceed
Myst 29-Apr-18 10:07 PM
Yes it can. You’re not thinking fourth dimensionally
Ribose 29-Apr-18 10:08 PM
yeah let me just time travel until before 1.18 came out so that we can advertize games from years ago on the current pvpgn servers and that'll surely work
Myst 29-Apr-18 10:08 PM
There you go
relesgoe 29-Apr-18 11:41 PM
Pvpgn doesn't have features like those that you described
cen 30-Apr-18 06:17 AM
well.. cross realm hostbots already advertise games on official and pvpgn servers so this already exists to some extent
cen 03-May-18 10:29 AM
@relesgoe develop branch does not build for me
/home/cen/git/pvpgn-server/src/bnetd/handle_bnet.cpp: In lambda function: /home/cen/git/pvpgn-server/src/bnetd/handle_bnet.cpp:1143:40: error: invalid conversion from β€˜char’ to β€˜const char’ [-fpermissive] packet_append_string(rpacket, '\0'); ^ In file included from /home/cen/git/pvpgn-server/src/bnetd/handle_bnet.cpp:38:0: /home/cen/git/pvpgn-server/src/common/packet.h:407:13: note: initializing argument 2 of β€˜int pvpgn::packet_append_string(pvpgn::t_packet, const char*)’ extern int packet_append_string(t_packet * packet, char const * str); ^~~~~~~~
relesgoe 03-May-18 11:34 AM
Are you compiling with clang?
cen 03-May-18 01:04 PM
gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)
relesgoe 03-May-18 01:28 PM
Interesting
GCC 5.5.0 doesn't throw that error
cen 03-May-18 01:42 PM
kinda interesting error, it won't accept a const char
must be some compiler flag
relesgoe 03-May-18 01:43 PM
Well the function does expect a pointer
Had I used empty double quotes, I believe the standard calls for it to be a temporary pointer
cen 03-May-18 01:44 PM
after a cleanup
/home/cen/git/pvpgn-server/src/bnetd/handle_bnet.cpp: In lambda function: /home/cen/git/pvpgn-server/src/bnetd/handle_bnet.cpp:1143:40: error: invalid conversion from β€˜char’ to β€˜const char*’ [-fpermissive] packet_append_string(rpacket, '\0');
hmm yes, it tries to pass a char
to char*
relesgoe 03-May-18 01:45 PM
Well it's an easy fix, but somehow Visual Studio 2017 and GCC 5.5 doesn't see it as an error
cen 03-May-18 01:45 PM
makes sense how this wouldnt work
relesgoe 03-May-18 01:46 PM
Do you think you can install older versions of GCC and see at what point it broke the compile
cen 03-May-18 01:47 PM
not particularly interesting bissecting that πŸ˜„
relesgoe 03-May-18 01:47 PM
Ok
cen 03-May-18 01:50 PM
changing to double quotes goes through
perhaps compilers just did this magic on the fly but changed the behaviour
I'll test versioncheck for 1.26 and 1.28, that is all I have installed
relesgoe 03-May-18 01:51 PM
Okay, maybe I should raise the minimum gcc version to 6.1 and use that version in Travis ci
6.1 is the version where gcc uses C++14 by default
cen 03-May-18 01:55 PM
perhaps not the best idea since centos 7 is still on gcc 4
altho I do think you can get newer from epel
Hello guys, I have dynamic IP and in the config i added my domain name www.xyz.com, but there is a problem. If the IP are changed (router restart ) players can't join in game. They can join onl...
my wild guess would be that translation is caching the dns IP address
I never used translate so I have no idea tbh
cen 03-May-18 02:07 PM
yeah..pretty sure that is what happens
pvpgn-server - Next generation of PvPGN server
I don't think you could really do much tho.. what is the solution? recheck dns every few seconds? probably just wasting time with this problem..
relesgoe 03-May-18 02:34 PM
He has to manually use the /rehash transfile command https://github.com/pvpgn/pvpgn-server/blob/74b06d022b0b61538590e8c30ec2
I believe that would do the trick
cen 03-May-18 02:39 PM
yeah, I figured it out 5 minutes ago
just automate it via some bot or w/e..
interestingly enough it also has signal handling so you can do it via kill -#
too bad stuff like this isn't documented anywhere
I don't think we even have complete list of commands anywhere
relesgoe 03-May-18 02:43 PM
I know restarting is also supported in the windows gui
I guess I can make a document to document commands
cen 03-May-18 02:44 PM
I have an incomplete list somewhere on our forum
I can send it as starting point
relesgoe 03-May-18 02:50 PM
I would personally re-check everything anyways, so it wouldn't be necessary
cen 03-May-18 02:50 PM
There might be some stuff that our guys back in the old dayz patched in so take it with a grain of salt
relesgoe 03-May-18 03:04 PM
This looks exactly like the helpfile (edited)
cen 03-May-18 03:05 PM
hah, perhaps that is where it was taken from then xD
you mean the man page? (edited)
relesgoe 03-May-18 03:06 PM
cen 03-May-18 03:07 PM
how do yo print this? /help?
relesgoe 03-May-18 03:07 PM
Yeah, just /help [command]
cen 03-May-18 03:08 PM
I see. Perhaps it should be converted to markdown and added to wiki anyway, I can doo it myself
relesgoe 03-May-18 03:08 PM
πŸ‘Œ
relesgoe 06-May-18 12:14 AM
Vector 06-May-18 12:43 AM
what the heck
what 1
Caaaaarrrrlll 06-May-18 12:44 AM
I agree
cen 06-May-18 07:42 AM
@relesgoe did you happen to add a config to select allowed versions also?
cen 06-May-18 07:56 AM
anyway, versioncheck.json seems to work as expected for me, tried dual support wiht 1.26 and 1.28, no problems
relesgoe 06-May-18 01:25 PM
@cen no
relesgoe 06-May-18 01:34 PM
d2gs - Multithreaded Game Server for Diablo II 1.13c Closed Battle.Net
relesgoe 06-May-18 04:52 PM
1.99.7.2.0 merged into master branch
relesgoe 09-May-18 11:23 AM
Every time I look at pvpgn defects in Coverity Scan, it boggles my mind how someone doesn't fuck up some random pvpgn servers every now and then
cen 10-May-18 01:32 AM
probably because there is no money in it.. thank god
cen 13-May-18 03:16 AM
WTF, sword art online map STARTS PLAYING ANIME MUSIC IN LOBBY???? How? Wtf
relesgoe 13-May-18 02:17 PM
Is this a StarCraft map?
cen 14-May-18 01:34 AM
w3 map
relesgoe 16-May-18 06:17 PM
What method would you suggest if a major server wants to use pvpgn-pro, use its own code in some functions, but still want to receive upstream updates?
@cen
Caaaaarrrrlll 16-May-18 07:08 PM
plug-ins
make an api that you can load dlls with
make the component they're modifying smaller
relesgoe 16-May-18 07:31 PM
I need an easier alternative to a plug-in system
cen 16-May-18 11:58 PM
there is already lua "plugin" system. I believe that is why harpy added it
my answer? fork it and merge upstreams..
relesgoe 18-May-18 02:42 PM
@Caaaaarrrrlll did you ever get around to setting up a tracking server yet?
Caaaaarrrrlll 18-May-18 02:55 PM
forgot about that, will make myself a note (edited)
Caaaaarrrrlll 26-May-18 01:39 AM
working on stuff with the tracker
Caaaaarrrrlll 26-May-18 03:29 PM
{"message":{"server_port":6112,"flags":3131961357,"software":"DebugMy Application.exe","version":"1.0.0.1","platform":"Windows","server_description":"Lorem ipsum dolor sit amet","server_location":"United States","server_url":"https:\/\/bnetdocs.org\/","contact_name":"BNETDocs Staff","contact_email":"[email protected]","active_users":1337,"active_channels":42,"active_games":0,"total_games":0,"total_logins":793,"uptime":56861}}
I think I'm going to make a daemon that takes udp messages and transforms them into http api calls
It would make it simpler on the website side of things to expose an endpoint for them, then just dump them into a memcache or mysql table
And it would provide an avenue for someone to convert the udp messages into http calls later on, deprecating the daemon (edited)
Caaaaarrrrlll 27-May-18 02:01 AM
Juuuuuust testing the layout
relesgoe 28-May-18 04:59 PM
@Caaaaarrrrlll do you experience this issue with your bot? https://github.com/pvpgn/pvpgn-server/issues/356
Having an issue while connecting using chat clients like stealthbot or topazchat. When I connect with stealthbot it shows 0 users inside of the channel even though there are users connected and in ...
Caaaaarrrrlll 28-May-18 05:04 PM
Makes sense
PvPGN never emulated the chat gateway protocol exactly like official did (edited)
The chat gateway is a text protocol on Battle.netβ„’ that was deprecated in 2005. It has since been disabled entirely; sending the protocol byte for this protocol causes the server to disconnect the client. The information below is retained for completeness and historic purposes.
relesgoe 28-May-18 05:11 PM
It isn't about the telnet protocol
Caaaaarrrrlll 28-May-18 05:11 PM
no?
Idk they don't exactly use the best English
I do know that BNRBot has minimal telnet/chat gateway support though, ymmv.
relesgoe 28-May-18 05:15 PM
It supposedly still occurs when emulating game clients too
So i.e., regular bnet protocol
Caaaaarrrrlll 28-May-18 05:16 PM
Hmm
@Davnit any ideas?
I could throw the latest master on bnetdocs.org if you want and re-compile
It's already running a copy of pvpgn
relesgoe 28-May-18 05:17 PM
For what reason?
Caaaaarrrrlll 28-May-18 05:17 PM
to test
Davnit 28-May-18 05:18 PM
afaik stealthbot does not support emulating CHAT
Caaaaarrrrlll 28-May-18 05:18 PM
relesgoe says it happens on the binary 0x01 as well
Davnit 28-May-18 05:18 PM
i'd need a packet log to be able to determine any further
bot -> tools -> log stealthbot packet traffic
i think it might've changed 482 is pretty old
relesgoe 30-May-18 02:18 PM
I was able to see myself in a channel with Stealthbot
Idk how to reproduce the problem
Davnit 30-May-18 02:26 PM
which version did you use
relesgoe 30-May-18 02:26 PM
The latest one posted on the repository's releases page
Davnit 30-May-18 02:26 PM
ah. it could be that the version he's using is old and not as flexible
cen 06-Jun-18 11:57 AM
@relesgoe if I use /set how would I force the change to flush to db? any ideas? (edited)
relesgoe 06-Jun-18 03:15 PM
@cen use the /save command
πŸ‘πŸ» 1
cen 10-Jun-18 02:42 PM
damn, looks like save was added after 1.99-SVN, one day I'll have to migrate to pro..
relesgoe 12-Jun-18 03:05 PM
Can't you backport it?
It's only a few loc
relesgoe 23-Jun-18 12:44 AM
@Caaaaarrrrlll how's the tracker going?
Caaaaarrrrlll 23-Jun-18 12:45 AM
relesgoe 23-Jun-18 12:46 AM
So it's ready to accept servers?
Caaaaarrrrlll 23-Jun-18 12:50 AM
try sending udp to home.carlbennett.me:6114
relesgoe 23-Jun-18 12:50 AM
I'll do it tomorrow
cen 29-Jun-18 02:24 AM
@Caaaaarrrrlll what to use for tracker address? pvpgn-tracker.carlbennett.me ? (edited)
Caaaaarrrrlll 29-Jun-18 02:25 AM
pvpgn-tracker.carlbennett.me:6114
I think I need to launch the daemon
cen 29-Jun-18 02:28 AM
added my beta server
Caaaaarrrrlll 29-Jun-18 02:29 AM
aight it's up
port is open on my router and on the box
daemon looks healthy
im heading to bed
cen 29-Jun-18 02:41 AM
Jun 29 10:39:49 [info ] tracker_set_servers: tracking packets will be sent to 99.30.48.104:6114 doesnt seem to be working tho
cen 02-Jul-18 03:59 PM
built stormlib, it's missing the params in symbol O_o nm -gC ../3rdparty/stormlib/lib-bsd/libStorm.so |grep SFileOpenArchive (old one, good) 000000000000ac80 T SFileOpenArchive(char const*, unsigned int, unsigned int, void**) nm -gC ../3rdparty/stormlib/lib-bsd/libstorm.so.9.22.0 |grep SFileOpenArchive (new build from master) 000000000003dfc0 T SFileOpenArchive wtf
cen 02-Jul-18 04:18 PM
oh man.. this one is going to be one of those deep dives into c++ linking.. fml
Caaaaarrrrlll 02-Jul-18 05:52 PM
I added bncsutil to travis ci yesterday https://travis-ci.org/BNETDocs/bncsutil
I was gonna add stormlib but didn't wanna go through the hassle of setting up the ci script again in one day lol
relesgoe 02-Jul-18 08:32 PM
@Caaaaarrrrlll how long does it take for servers to appear on the website once a packet is sent?
Caaaaarrrrlll 02-Jul-18 08:32 PM
instant
do you see "Method Not Allowed" when you access https://pvpgn-tracker.carlbennett.me/solicit.json ?
relesgoe 02-Jul-18 08:33 PM
yes]
Caaaaarrrrlll 02-Jul-18 08:34 PM
try now
relesgoe 02-Jul-18 08:34 PM
same
Caaaaarrrrlll 02-Jul-18 08:35 PM
the udp packet isn't getting to my daemon
relesgoe 02-Jul-18 08:35 PM
what's weird is that my dns is resolving pvpgn-tracker.carlbennett.me to 99.30.48.104, but when i use a reverse ip lookup service, a different domain shows up
Caaaaarrrrlll 02-Jul-18 08:35 PM
?
I have ipv4 and ipv6
99.30.48.104 and 2600:1700:e60:8d6f:96c6:91ff:fe1b:fea8 (edited)
I don't see 6114 on my router's firewall log
relesgoe 02-Jul-18 08:37 PM
my dns: pvpgn-tracker.carlbennett.me -> 99.30.48.104 reverse ip lookup (e.g. https://mxtoolbox.com/ReverseLookup.aspx): 99.30.48.104 -> 99-30-48-104.lightspeed.rcsntx.sbcglobal.net
relesgoe 02-Jul-18 08:56 PM
any idea?
well your server serves pvpgn-tracker.carlbennett.me differently than 99.30.48.104
and pvpgn sends the packets directly to 99.30.48.104 (I think)
so maybe that's why it isn't working
Caaaaarrrrlll 02-Jul-18 09:07 PM
I have it setup in NAT
cen 03-Jul-18 02:11 AM
echo "lol" > /dev/udp/pvpgn-tracker.carlbennett.me/6114
cen 03-Jul-18 03:01 AM
oooh... FUCK ME, I had copied header files from older stormlib dir, therefor symbols mismatched
anyway, carl your tracker sux, fix it :p
I can send some UDPs towards you when needed
Caaaaarrrrlll 03-Jul-18 03:34 AM
so it works now?
I'll try a payload from a remote server later
cen 03-Jul-18 03:51 AM
y, stormlib fixed, unrelated to tracker. tracker no work
Caaaaarrrrlll 03-Jul-18 03:58 AM
Jul 03 04:54:49 utility.localdomain pvpgn-tracker[30482]: <-- [163.172.160.22:6112] Received solicit request Jul 03 04:54:49 utility.localdomain pvpgn-tracker[30482]: unknown version: 512 Jul 03 04:55:49 utility.localdomain pvpgn-tracker[30482]: <-- [163.172.160.22:6112] Received solicit request Jul 03 04:55:49 utility.localdomain pvpgn-tracker[30482]: unknown version: 512 Jul 03 04:56:49 utility.localdomain pvpgn-tracker[30482]: <-- [163.172.160.22:6112] Received solicit request Jul 03 04:56:49 utility.localdomain pvpgn-tracker[30482]: unknown version: 512
¯\_(ツ)_/¯
cen 03-Jul-18 04:44 AM
what payload should I send to test?
Caaaaarrrrlll 03-Jul-18 05:34 AM
I think the endianness is flipped
I'll have to recompile the daemon to fix it
relesgoe 09-Jul-18 03:39 PM
1.99.7.2.1 is being prepared for release
relesgoe 09-Jul-18 11:30 PM
@Caaaaarrrrlll if you ever want to start a new project: https://github.com/pvpgn/phputils/issues/1
I wouldn't recommend for anyone to host this utility in its current state. Current SQL handler classes do not filter database queries, allowing SQL injection vulnerabilities An attacker can obt...
upvote 1
Caaaaarrrrlll 10-Jul-18 03:45 AM
I'll keep this tab open for later 8)
cen 11-Jul-18 03:37 PM
I have some web tools to manage our server, account creation, banlist, icons and some other stuff, I just never found the time to release it to the public
cen 25-Jul-18 11:16 AM
damn.. blizzard getting really hostile now, antidebugging features in 1.30
relesgoe 25-Jul-18 11:17 AM
Wc3?
cen 25-Jul-18 11:17 AM
yep
I guess I must choose the way of pro cracker career to get the goddamn w3l working
relesgoe 25-Jul-18 11:20 AM
Well this isn't good
Caaaaarrrrlll 25-Jul-18 11:22 AM
:\
relesgoe 25-Jul-18 11:23 AM
I've been secretly hoping that someone would get past sc:r's anti debugging by now
cen 25-Jul-18 11:24 AM
also.. native antihack apparently (warden.dll?)
so that will block w3l for sure
Caaaaarrrrlll 25-Jul-18 11:25 AM
bitch to lodle be like "blizzard announced that they weren't going to alienate the community by remastering their classic games"
relesgoe 25-Jul-18 11:25 AM
Displays the list of all exported functions and their virtual memory addresses for the specified DLL files
Can you use this and screenshot what warden.dll exports for me
I'm curious
Davnit 25-Jul-18 11:29 AM
blizzard has their own warden.dll now?
cen 25-Jul-18 12:36 PM
I will provide any info I get as I start working on w3l, I am finishing up dual version support for our server atm
relesgoe 31-Jul-18 04:08 PM
@cen any reason why you used clang to compile pvpgn in debian?
cen 31-Jul-18 04:42 PM
not sure, I felt like it
or maybe it had old gcc at that time
cen 01-Aug-18 10:25 AM
riddle me this.. gproxy sits between w3 and pvpgn, proxying and/or modifying packets as it pleases. what if I generated a W3GS_REQJOIN in gproxy, send it to host and host responds with (I assume) W3GS_SLOTINFOJOIN to w3. Will the game join the lobby or fail because the packet was not originating from the engine? Speculations? (edited)
I'd like to implement something like /follow command or autojoining games upon hosting them with bot
relesgoe 01-Aug-18 10:26 AM
fail?
cen 01-Aug-18 10:27 AM
I dont know yet, I am just asking for opinions at this point πŸ˜›
relesgoe 01-Aug-18 10:27 AM
the game's gui won't do anything at least
and then the client wont be prepared for any other packets from the host
cen 01-Aug-18 10:28 AM
what if the client has packet trigger only without checking the state?
relesgoe 01-Aug-18 10:29 AM
that shouldn't happen
i feel that there could be exploits waiting to happen if that were the case
cen 01-Aug-18 10:30 AM
other than simulating keystrokes I am not sure if there is another way to do this
relesgoe 01-Aug-18 10:30 AM
e.g. sending a malicious checkrevision package
i know with starcraft, you can search through a list of window handles
from there, i think you can emulate a click or keyboard shortcut to select a button
or even input text
cen 01-Aug-18 10:31 AM
yeah, I have that working already for autologin (never released to public tho)
it's fragile tho, if player types anything at that time
breaks the sequence
relesgoe 01-Aug-18 10:32 AM
disable the keyboard temporarily?
if that's possible
relesgoe 01-Aug-18 10:32 AM
or have the player type a confirmation command to initiate it
the player wouldnt expect to be able to send another message afterwards
cen 01-Aug-18 10:33 AM
it could be that this also blocks virtual keyboard events..
this is pretty risky tho.. if anything goes wrong and keyboard doesnt unblock.. quite a hack
relesgoe 01-Aug-18 10:37 AM
btw is there an official zlib 1.2.11 dll binary?
cen 01-Aug-18 10:42 AM
I think I had to build it from source, they dont have binary downloads (edited)
relesgoe 01-Aug-18 10:43 AM
they provide an official 1.2.8 binary
but any version after that, they stopped
cen 01-Aug-18 10:45 AM
I dont think the version matters tbh (edited)
relesgoe 01-Aug-18 10:45 AM
i usually like to stay up to date
cen 01-Aug-18 11:14 AM
while in chat channel, wat key combo triggers shortcuts (for custom games -> G for example)?
I need to escape the caret focus
relesgoe 01-Aug-18 11:14 AM
idk
i think it's alt
cen 01-Aug-18 11:15 AM
yep
cen 03-Aug-18 04:27 PM
sending key combo of ALT+G is very unreliable, like it just wont work, while pressing single chars works fine. trial and error didnt help so far (edited)
anyone knows for a good keylogger that also records SendInput winapi?
funny enough, I had it working 2 days ago by adding a single letter key press before alt+g.. fucking weird
relesgoe 03-Aug-18 04:32 PM
you could try hooking SendInput
or call GetKeyboardState() in a loop while holding down alt+g
accordings to docs at https://docs.microsoft.com/en-us/windows/desktop/learnwin32/keyboard-input WM_SYSKEYDOWN is sent when alt+ any key is pressed
Keyboard Input
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx "This function does not reset the keyboard's current state. Any keys that are already pressed when the function is called might interfere with the events that this function generates. To avoid this problem, check the keyboard's state with the GetAsyncKeyState function and correct as necessary."
relesgoe 03-Aug-18 04:59 PM
@cen you think you could invest some time into pvpgn?
I want to combine command line and gui functionality into one binary
Right now, it's a pita to have it separated
cen 04-Aug-18 02:50 AM
hmm good idea with GetKeyboardState, I can log the state to console at least πŸ‘πŸ»
@pvpgn: my plan was to tackle w3l in a few weeks from now but I could dedicate a few hours to pvpgn. I have 3 week vacation starting on 20th or 27
I am not sure combining gui and main binary is a good idea tho
relesgoe 04-Aug-18 08:51 PM
What are the reasons against combining them?
cen 07-Aug-18 08:26 AM
I am not sure. If you combine them, does it mean we end up having GUI only? What happens when you launch it on server, it tries to launch a window? Dependency on X/GUI? (edited)
Nobody even uses gui unless you build on windows
As it is now having it completely seperate seems like a better architecture. The only thing we could change is to build the GUI with Qt, opens up a whole lot of options.
Altho GUI is a waste of time imho anyway..
relesgoe 07-Aug-18 08:35 AM
The GUI would only be available on Windows
And it could be disabled/not drawn if pvpgn is launched with a certain command line option
Caaaaarrrrlll 16-Sep-18 07:12 PM
this phputils repo wants to give me aids
there's a lot more issues with it than just sql injection
Ribose 16-Sep-18 07:14 PM
does it have php injection using eval()
also, pvpgn uses php?
Caaaaarrrrlll 16-Sep-18 07:27 PM
I wouldn't recommend for anyone to host this utility in its current state. Current SQL handler classes do not filter database queries, allowing SQL injection vulnerabilities An attacker can obt...
relesgoe 16-Sep-18 07:44 PM
I'm not surprised
HarpyWar 24-Sep-18 01:55 AM
@relesgoe what changes break appveyor build? (I wrote you email, you didn't unswered)
relesgoe 26-Sep-18 06:35 PM
Building should still work on the master branch
As for the develop branch, I tried to migrate away from magic builder
I want to use vcpkg to obtain packages
I also tried to upgrade the Lua version
I still need to get around to doing that
HarpyWar 27-Sep-18 09:04 AM
@relesgoe Notify me when you finish this step. Magic Builder can be upgraded to support an actual building method regardless of how it works
cen 28-Sep-18 02:19 AM
well boyz.. looks like patch 1.30 could be the last one that still works with pvpgn
(if we fix w3l ofc)
new PTR brings encrypted traffic
yay
blizz going full evil mode as was expected https://us.battle.net/forums/en/bnet/topic/20769476896?page=1
Greetings Raiders, Tinkerers, Harbingers, and Wardens, Over the past 15 years, the community created hostbots, mastered the arcane art of port forwarding, and passed down knowledge of the most popular maps. Self-solves, workarounds, and the resolute desire to keep friends pla...
breaks pvpgn and ghost bots ofc
could be fun to try and crack tho.. will see how much enthusiasm is left in the alter bnet community
Ribose 28-Sep-18 02:27 AM
w3 had some kind of encrypted... thing during beta I think then it was disabled, afaik only for bncs
relesgoe 30-Sep-18 02:58 PM
well d2 is next
cen 06-Oct-18 10:57 AM
Management bot for private DotA and CG leagues. Contribute to cen1/bnet-guard development by creating an account on GitHub.
more to come
Caaaaarrrrlll 17-Oct-18 05:32 AM
@deleted-role Idea: make this channel available to read for anyone in the Discord? And should writing messages be locked to those with pvpgn contributor role or should anyone be allowed? (edited)
relesgoe 17-Oct-18 10:57 AM
@Caaaaarrrrlll I didn't realize that this channel was private
View and chatting should be public
Caaaaarrrrlll 17-Oct-18 10:57 AM
πŸ‘
shathan 17-Oct-18 04:36 PM
So Carl offered to add server linking to pvpgn via the proper 0x08 packet
relesgoe 17-Oct-18 04:38 PM
What is the 0x08 packet?
Caaaaarrrrlll 17-Oct-18 05:07 PM
I did?
OneMeanDragon 17-Oct-18 05:08 PM
pretty sure x8 was completely doced was it not lol
Caaaaarrrrlll 17-Oct-18 05:09 PM
not sure how game advertisement would work for server linking https://bnetdocs.org/packet/291/sid-startadvex
Creates a game in a manner similar to SID_STARTADVEX2 and SID_STARTADVEX3.
upvote 1
shathan 17-Oct-18 10:16 PM
I was too lazy to lookup the suspected server linking packet 😦
cen 21-Oct-18 03:26 AM
@relesgoe any pointers how one sets up the "upcoming tournament" text in top-rigt corner in w3?
I know the background is just a texture which we already replace in mpq with our logo, no idea about the overlay text tho
relesgoe 21-Oct-18 11:10 AM
I've never seen that before
Did that box appear in a new patch?
Is it always used for upcoming tournaments?
Is it blank on pvpgn servers?
OneMeanDragon 21-Oct-18 12:03 PM
it was just motd messages
cen 21-Oct-18 03:05 PM
pretty sure this is standard on official for years (edited)
not sure about pvpgn.pro if anything is there
I'll check tomorrow
maybe some packet capture will reveal the source
sponsored by seems to be another possible modifiable texture, intriguing (edited)
OneMeanDragon 21-Oct-18 04:04 PM
the motd i dont think always had an image though
was always text though
relesgoe 02-Nov-18 09:38 AM
which wc3 version is using the new protocol?
Davnit 02-Nov-18 09:55 AM
1.30.2
Meanski 08-Nov-18 03:47 AM
Hey team, anyone know much about the bncache.dat file and how it gets updated?
relesgoe 08-Nov-18 08:05 AM
It's pretty straightforward, it's actually a mpq file and game clients save downloaded files to it if it doesn't already exist or the existing file is out of date by timestamp
Meanski 08-Nov-18 08:15 AM
Ahh ok. Interesting, didn't know it was timestamped - thanks
some of the users on my server are not seeing news/banner updates and was wondering why theirs weren't refreshing
relesgoe 08-Nov-18 09:35 AM
Do /rehash news and /rehash banners (edited)
Meanski 08-Nov-18 09:39 AM
Yeah tried that... I think I found the issue - Linux users, ill dig into it further
relesgoe 12-Nov-18 10:33 PM
@Meanski any updates?
Meanski 13-Nov-18 12:51 AM
No nothing yet but definitely something to do with Linux. I’ve asked my community if there is anyone else playing on it to test
cen 14-Nov-18 12:34 PM
I managed to build clang from -Wlifetime branch on my fedora machine, proceeded building ghost and pvpgn with it to see how bad the dangling pointer situation is, unfortunately clang segfaults very early on pvpgn code. ghost went through and failed at linking so that is better. I'll try to get a full build on both, then check the warnings and find the code samples that cause it. Expecting a nice blog post and some pull requests out of this experiment. (edited)
relesgoe 15-Nov-18 11:47 AM
badpokerface
Glyph 03-Dec-18 07:31 AM
@cen whats your blog link?
Caaaaarrrrlll 03-Dec-18 08:50 AM
isn't it http://xpam.pl/ ?
cen 03-Dec-18 04:22 PM
yes. unfortunately can't compile pvpgn with lifetime pointer analysis due to clang segfaulting (opened bug upstream). still sifting through ghost compile log, nothing mind blowing seen yet, probably because it's much better code (edited)
Caaaaarrrrlll 26-Jan-19 01:01 PM
yo @cen when ya got a sec could you upload the zip files for the bncsutil releases? https://github.com/BNETDocs/bncsutil/releases
The Classic Battle.netβ„’ client library. Contribute to BNETDocs/bncsutil development by creating an account on GitHub.
cen 27-Jan-19 06:21 AM
I see a zip link, probably autogenerated by github. isnt that enough? (edited)
Caaaaarrrrlll 27-Jan-19 07:11 AM
thats the source code
I mean a compiled .dll and .so
lol
cen 27-Jan-19 09:17 AM
oh.. the binaries
well, I do host apt/rpm repo so that is probably enough for the linux side. I can throw the dll in there I guess
I'd argue any bncsutil user should compile it him/herself anyway πŸ˜›
Caaaaarrrrlll 27-Jan-19 09:32 AM
good man and it's appreciated πŸ˜„
I still link to your repos for linux side of things on my servers πŸ˜‰
OneMeanDragon 28-Jan-19 03:32 AM
guess i needed to see what i could start after 5500 lines of code
πŸ™„ 1
OneMeanDragon 28-Jan-19 01:54 PM
5562*
jaenster 02-Feb-19 05:46 PM
an insane amount of codelines isnt something to be proud of trough
Davnit 02-Feb-19 05:52 PM
Function Add(ByVal base As Integer, ByVal number As Integer) As Integer If number = 1 Then Add = base + 1 Else If number = 2 Then Add = base + 2 Else If number = 3 Then Add = base + 3 Else If number = 4 Then Add = base + 4 Else Add = base For i = 1 To number Add = Add + 1 Next End If End Function
(edited)
πŸ‘ 2
πŸ€” 1
thonking 3
cen 03-Feb-19 01:12 PM
@Caaaaarrrrlll looks like on github it is not possible to add files to tag releases, you need to draft it. So.. I have to draft 1.4.2 I guess.
Caaaaarrrrlll 04-Feb-19 02:57 AM
now why would pvpgn crash when my client sends 0x51?
nothing in the debug log says why
Feb 04 09:54:36 [debug] select_checkrevision: Could not find corresponding CheckRevision entry, returning default CheckRevision Feb 04 09:54:36 [debug] _client_countryinfo109: [21] selected "ver-IX86-1.mpq" "A=42 B=42 C=42 4 A=A^S B=B^B C=C^C A=A^S" Feb 04 09:54:36 [info ] _client_authreq109: [21] CLIENT_AUTHREQ_109 ticks=0xa10a1437, verstr=227.1.30.1 exeinfo="Warcraft III.exe 09/13/18 23:28:09 21254120" versionid=0x0000001e gameversion=0xe3011e01 checksum=0x0000002a Feb 04 09:54:36 [info ] _client_authreq109: [21] skipping versioncheck because allow_unknown_version is true Feb 04 09:54:36 [info ] eventlog_startup: logging event levels: fatal,error,warn,info,debug,trace
relesgoe 04-Feb-19 03:00 AM
I don't know
Does it only happen with that client?
Caaaaarrrrlll 04-Feb-19 03:01 AM
only with W3XP
and WAR3
relesgoe 04-Feb-19 03:01 AM
And only that version?
Caaaaarrrrlll 04-Feb-19 03:01 AM
I haven't tested other w3 versions
relesgoe 04-Feb-19 03:02 AM
Try turning allow_unknown_version off
Caaaaarrrrlll 04-Feb-19 03:03 AM
did that now I get this:
Feb 04 10:03:12 [info ] _client_authreq109: [21] CLIENT_AUTHREQ_109 ticks=0x5c569f64, verstr=227.1.30.1 exeinfo="Warcraft III.exe 09/13/18 23:28:09 21254120" versionid=0x000000d3 gameversion=0xe3011e01 checksum=0x0000002a Feb 04 10:03:12 [info ] _client_authreq109: [21] client failed versioncheck Feb 04 10:03:12 [error] packet_append_string: got NULL string
null string?
[2/4/2019 4:03:12 AM] SEND BNLS_0x1A (Bytes: 79) [2/4/2019 4:03:12 AM] RECV BNLS_0x1A (Bytes: 68) [2/4/2019 4:03:12 AM] SEND SID_0x51 (Bytes: 149) [2/4/2019 4:03:12 AM] RECV SID_0x51 (Bytes: 8)
the response code is invalid version
do you have the versioncheck json for war3 0x1e?
relesgoe 04-Feb-19 03:05 AM
If it's not in the GitHub repo, then no
Caaaaarrrrlll 04-Feb-19 03:05 AM
it's not, I checked
relesgoe 04-Feb-19 03:05 AM
And I unfortunately don't have a copy of wc3 to test
Caaaaarrrrlll 04-Feb-19 03:06 AM
I can give you the exe from jbls
relesgoe 04-Feb-19 03:06 AM
Well I would need a bunch of more files to run the game
Maybe I could use bnrbot?
Caaaaarrrrlll 04-Feb-19 03:08 AM
I don't think I ever updated bnrbot for the new local hashing
it should work with bnls
by new, I mean where it only takes 1 file
weird thing is SEXP works
relesgoe 04-Feb-19 03:10 AM
Well even if I do find the bad code, the pvpgn dev branch is broken because I was working on something else a while ago
I should've made another dev branch
OneMeanDragon 04-Feb-19 04:08 AM
thats always good
Vector 04-Feb-19 10:49 PM
you can always checkout the commit before you started working on something else, then make that a branch of its own
cen 05-Feb-19 03:09 PM
S> SID_WARCRAFTGENERAL subcommand id 1 is not documented anywhere
I am getting it from pvpgn
trying to debug broken quickgame search in pro and svn
relesgoe 05-Feb-19 08:49 PM
t_bnet_header h; bn_byte option; bn_int count; bn_int reply; /* bn_short avgtime; - only in W3XP so far average time in seconds of search */
according to pvpgn, 0x01 is sent when "anongame found"
weird how it isnt documented on bnetdocs
maybe we should look at wc3 gamebot source code to see how they handle it
Davnit 05-Feb-19 08:53 PM
if you find out anything please leave a comment on the packet thread or edit it if you can!
this 1
cen 06-Feb-19 09:56 AM
@relesgoe if you know out of head, what is w3trans and how does it work? w3routeaddr in bentd.conf in the meantime, I am researching on my own
I guess it routes players to p2p (edited)
Caaaaarrrrlll 06-Feb-19 09:57 AM
I should give @relesgoe and @cen edit permissions on bnetdocs.org if they don't have it already
OneMeanDragon 06-Feb-19 09:59 AM
if i remember routaddr just told the server the client is useing a different port
cen 06-Feb-19 10:00 AM
it seems to me like a listening endpoint for anongame players that matched, default is 0.0.0.0 which supposedly fails after it falls back trying to resolve a valid IP
which is why I can't start a quickgame
Caaaaarrrrlll 06-Feb-19 10:04 AM
both cen and relesgoe can now modify bnetdocs.org, post news, make/delete/modify packets, etc.
congrats
relesgoe 06-Feb-19 10:04 AM
I've been able to do that
cen 06-Feb-19 10:05 AM
seems like I should be happy but it just means more work is expected πŸ˜› (edited)
Caaaaarrrrlll 06-Feb-19 10:05 AM
this is true relesgoe, I actually just copied your permissions to his
cen 06-Feb-19 10:05 AM
@relesgoe I think it might have to do with how server is set up
I cant see my public ip from ip a (edited)
so perhaps pvpgn also cant figure it out which ip to send out to anongamers (edited)
Caaaaarrrrlll 06-Feb-19 10:06 AM
https://github.com/BNETDocs/bnetdocs-web/blob/phoenix/src/libraries/User.php#L24-L46
MariaDB [bnetdocs_phoenix]> SELECT id,username,BIN(options_bitmask) FROM users WHERE id IN (4955,4985); +------+----------+----------------------+ | id | username | BIN(options_bitmask) | +------+----------+----------------------+ | 4955 | xboi209 | 11111111100100111110 | | 4985 | cen | 11111111100100111110 | +------+----------+----------------------+ 2 rows in set (0.00 sec)
OneMeanDragon 06-Feb-19 10:07 AM
running the game on the same pc as the server?
cen 06-Feb-19 10:07 AM
no, server is in a public VM, I am conencting from 2 laptops from same internet connection tho (edited)
but I failed even with another person trying to search quickgame
I'll try to bind to domain
hmm indeed, w3route is it's own socket. I wonder if this could be easily hacked to redirect gamers to bot hosted game thonking
the answer is probably yes
OneMeanDragon 06-Feb-19 10:09 AM
in options
cen 06-Feb-19 10:28 AM
ok figured it out.. my scalewayVM is essentially in corporate NAT so pvpgn cant bind to public IP directly (edited)
needed to add address translation
address_translation.conf
pretty sure I did a similar thing a few years ago but forgot about this. I should probably add it to main readme as a reminder.
cen 06-Feb-19 11:07 AM
It seems w3route is a special packet class, I don't see any of these in bnetdocs, ex: SERVER_W3ROUTE_ACK in pvpgn. Any ideas? (edited)
relesgoe 06-Feb-19 11:08 AM
Idk
cen 06-Feb-19 11:09 AM
weird.. whole set of packets undocumented. O_o
cen 06-Feb-19 11:50 AM
interesting observation.. it seems w3 clients elect the host on their own in p2p, pvpgn just does a double foreach and sends their ip/port data to each
not 100% sure but it sure looks like it. mind=blown
relesgoe 06-Feb-19 11:53 AM
Sounds about right
Nvm
I know that in starcraft, p2p communication begins in the game lobby
Caaaaarrrrlll 06-Feb-19 11:56 AM
I thought w3 in-game protocol is tcp based
It doesn't have p2p; clients use the host to talk to each other
relesgoe 06-Feb-19 11:57 AM
Ok yeah
cen 06-Feb-19 11:59 AM
that makes sense, but the initial election has to be p2p
Caaaaarrrrlll 06-Feb-19 11:59 AM
That's also why in traditional w3 (without ghostbot), if the host leaves, everybody disconnects/game ends
what election?
the host is whoever creates the lobby
cen 06-Feb-19 11:59 AM
how is the host determined?
Caaaaarrrrlll 06-Feb-19 11:59 AM
host is determined by a client announcing to battle.net that they're hosting a game
battle.net then shows that game to prospective clients so they can join
clients connect directly to the host when they want to join
they send SID_NOTIFYJOIN
battle.net doesn't have a clue what goes on inside a game lobby
cen 06-Feb-19 12:00 PM
If 2 players hit the quickgame button at the same time, who decided who creates the game?
Caaaaarrrrlll 06-Feb-19 12:01 PM
hmmm, that I'm not sure
cen 06-Feb-19 12:01 PM
pvpgn matches the players by their level, then informs them about each other
then, somehow, they must decide who hosts
niels 06-Feb-19 12:02 PM
@Caaaaarrrrlll if the host leaves in wc3, there's an election to determine the new host, but it's based on who can access who (port forwarding / firewalls, etc)
ghost doesn't "leak" ip addresses, that's why the game ends if the host disconnects
but using the client, the host disconnect and the game will continue
I'm not sure if this also happens for ladder games, though
I would assume not
Caaaaarrrrlll 06-Feb-19 12:07 PM
what W3GS message is sent to do an election in the official client?
ignoring the quickgame and however a host is chosen that way, say the game is already started and the host leaves
if the game doesn't end right there, how does it continue? you say the remaining players do an election
well how does that occur
what do they send ?
niels 06-Feb-19 12:09 PM
I have these packet IDs in my notes: 0x15 0x16 0x2B 0x2C 0x39, but I ignored it as it was not important to me
cen 06-Feb-19 12:09 PM
I dont remember that being true tbh, I remember host disc=bye bye game
Caaaaarrrrlll 06-Feb-19 12:10 PM
I documented the W3GS protocol after reading the ghostbot's source code
niels 06-Feb-19 12:10 PM
ghost doesn't have to implement this, because the clients send it to each other
Caaaaarrrrlll 06-Feb-19 12:11 PM
0x15 0x16 0x2B 0x2C 0x39 are missing from documentation
niels 06-Feb-19 12:11 PM
I know
cen 06-Feb-19 12:12 PM
well, I guess this election would be same as quickgame election
or very similar
Caaaaarrrrlll 06-Feb-19 12:12 PM
Warcraft 3 game hosting bot. Contribute to Strilanc/Tinker development by creating an account on GitHub.
>2011
cen 06-Feb-19 12:16 PM
no structs? :/
OneMeanDragon 08-Feb-19 01:48 AM
lol
OneMeanDragon 08-Feb-19 01:55 AM
he did stuff for Lan too looks like heh
Qndel 20-Feb-19 06:02 AM
Heyo
Can someone help me with hosting a server on windows? πŸ˜„
Qndel 20-Feb-19 06:36 AM
I'm getting Unable to authorize Unrecognized character information
when trying to join a game in d1 :<
Caaaaarrrrlll 28-Feb-19 01:19 PM
relesgoe 28-Feb-19 01:21 PM
You never asked
Caaaaarrrrlll 28-Feb-19 01:30 PM
ok, well where can I find the php version of that?
"PvPGN PHP Tracker v0.9999" or whatever
relesgoe 28-Feb-19 01:32 PM
I dunno
Find out what php version was mainstream during the early 2000s
OneMeanDragon 01-Mar-19 12:58 AM
the inner server communications between pvpgn and d2gs needs to be documented at some point lol
relesgoe 01-Mar-19 02:41 PM
For what purpose?
Davnit 01-Mar-19 03:51 PM
Document all the things!
martimarkov 01-Mar-19 10:49 PM
Hey everyone. I've been trying to get the new Mac client to connect to PvPGN but I'm hitting a few roadblocks
relesgoe 01-Mar-19 10:49 PM
i just read your replies on the github issues
you need to download ver-xmac-0.mpq from bnet first and then add that to pvpgn
martimarkov 01-Mar-19 10:52 PM
Okay is there anyway to get that specific file? Every time I connect to bnet I get psistorm-XMAC-NN.mpq files
relesgoe 01-Mar-19 10:52 PM
can you upload all of those files for me, i'm interested
but to answer your question, use a bnftp program to obtain the specific file
martimarkov 01-Mar-19 10:53 PM
Cool. I'll post a link but I think the algorithm might have changed based on what I'm seeing in IDA when I decompile the dynamic library inside the MPQ
OR I'm 100% off base
relesgoe 01-Mar-19 10:56 PM
@Caaaaarrrrlll can you obtain all the versions of these psistorm-XMAC-NN.mpq files and upload them to your server
ack 1
@marti.markov well the client should still be able to accept ver-xmac-0.mpq, so you can stick to that for pvpgn
Caaaaarrrrlll 01-Mar-19 11:00 PM
relesgoe 01-Mar-19 11:01 PM
oh PMAC versions also exist (edited)
Caaaaarrrrlll 01-Mar-19 11:01 PM
I'll get those too then
relesgoe 01-Mar-19 11:01 PM
but the pmac versions haven't been updated since 2007
and is it possible to change the last modified date of the files on your server to match what blizzard has
it might be tedious to do
Caaaaarrrrlll 01-Mar-19 11:02 PM
does bnftp have an option for that?
oh I guess it's baked in
lemme change an rsync parameter
relesgoe 01-Mar-19 11:03 PM
i know that bnftp for windows sets all the file times to the time the file is created on the local system
i guess the linux version actually saves the last modified timestamp
Caaaaarrrrlll 01-Mar-19 11:03 PM
wait yeah those all say 2016
on the files.bnetdocs.org
it's 2019, yo
relesgoe 01-Mar-19 11:04 PM
whoops
i guess i read the 6 as a 9
Caaaaarrrrlll 01-Mar-19 11:04 PM
martimarkov 01-Mar-19 11:05 PM
So just tried it with ver-xmac-0.mpq and "A=3845581634 B=880823580 C=1363937103 4 A=A-S B=B-C C=C-A A=A-B" as the equation but I'm still not being able to get past the version check
PvPGN does send the file to the client
Caaaaarrrrlll 01-Mar-19 11:05 PM
ver-xmac-0.mpq bogaS
I'll grab those too
relesgoe 01-Mar-19 11:06 PM
you already have that one
Caaaaarrrrlll 01-Mar-19 11:06 PM
it's the same as ver-IX86-0.mpq ?
OH (edited)
they're in the wrong directory
relesgoe 01-Mar-19 11:07 PM
@martimarkov read the logs, it should say what the client gave back
Caaaaarrrrlll 01-Mar-19 11:08 PM
ver-PMAC-0.mpq now under PMAC/, and likewise for XMAC
relesgoe 01-Mar-19 11:08 PM
@martimarkov look for _client_authreq109: [1100] CLIENT_AUTHREQ_109 and then paste the entire line here
you should then be able to write a versioncheck entry based on the given information
(and make a pull request for it on github too awesomeface )
upvote 1
martimarkov 01-Mar-19 11:09 PM
for sure will make it as soon I as manage to get it working πŸ˜„
but I'm not even getting to the authreq
Mar 02 07:01:24 [debug] _client_auth_info: [25] AUTH_INFO packet { protocol=0x0, platform=XMAC, product=D2XP, versionid=0xe, language=enUS, localip=0x9303a8c0, tzbias=0000, locale=1033, language=1033, country=USA.United States } Mar 02 07:01:24 [info ] conn_set_gamelang: [25] setting client gamelang to "enUS" Mar 02 07:01:24 [debug] _client_auth_info: [25] selected "ver-xmac-0.mpq" "A=3845581634 B=880823580 C=1363937103 4 A=A-S B=B-C C=C-A A=A-B" Mar 02 07:01:24 [debug] ipbanlist_check: lastcheck: 1551506484, now: 1551506484, now-lc: 0. Mar 02 07:01:24 [debug] ipbanlist_check: checking 89.44.40.162 Mar 02 07:01:24 [info ] sd_accept: [26] accepted connection from 89.44.40.162:61338 on 0.0.0.0:6112 Mar 02 07:01:24 [debug] conn_create: [26][23] sessionkey=0x944155773 sessionnum=0x00000001 Mar 02 07:01:24 [debug] sd_accept: [26] client connected to a bnet listening address Mar 02 07:01:24 [info ] handle_init_packet: [26] client initiated file download connection Mar 02 07:01:24 [trace] conn_shutdown: [26] connection already closed Mar 02 07:01:24 [info ] file_send: [26] sending file "ver-xmac-0.mpq" ("/usr/local/pvpgn/var/pvpgn/files/ver-xmac-0.mpq") of length 35892 Mar 02 07:01:24 [debug] sd_tcpinput: [26] read returned -1 (closing connection) Mar 02 07:01:24 [info ] conn_destroy: [26] closed file connection Mar 02 07:01:25 [debug] sd_tcpinput: [25] read returned -1 (closing connection) Mar 02 07:01:25 [info ] conn_destroy: [25] closed bnet connection
relesgoe 01-Mar-19 11:10 PM
@Caaaaarrrrlll the ./ links points to the current url on your site
Caaaaarrrrlll 01-Mar-19 11:10 PM
yes
that's how ./ works
relesgoe 01-Mar-19 11:10 PM
oh yeah
oh wait
Caaaaarrrrlll 01-Mar-19 11:10 PM
do you want me to hide it?
relesgoe 01-Mar-19 11:11 PM
it's whatever
for some reason, i thought it did what ../ did
Caaaaarrrrlll 01-Mar-19 11:11 PM
that UI is just a php file that loads the directory
downloads don't pass through php though, nginx handles those
relesgoe 01-Mar-19 11:13 PM
@martimarkov i'm not sure what's going on
my best guess is that the version of d2 you're using doesn't want to accept ver-xmac-0.mpq
mac files are able to contain signatures right?
Caaaaarrrrlll 01-Mar-19 11:17 PM
not sure if the file itself can, but .app's
which .app is just fancy for a folder that contains a defined file structure
martimarkov 01-Mar-19 11:18 PM
They get code signed so the .app folder gets a signature and the binary could as well
at least on iOS that was the case
relesgoe 01-Mar-19 11:19 PM
so can you extract the library from the psistorm-XMAC-##.mpq file and try to figure out if it's signed or not
i know that on windows, newer versions of game clients verify the signature of the .dll file
idk if there's an equivalent for macs
martimarkov 01-Mar-19 11:19 PM
But the XMAC-ver files seem to be only for PPCs so they won't work. Just opened one in IDA
relesgoe 01-Mar-19 11:21 PM
that shouldn't be right
blizzard made a PMAC version for powerpc architecture and XMAC for intel architecture
Caaaaarrrrlll 01-Mar-19 11:23 PM
ver-PMAC-0.mpq and ver-XMAC-0.mpq have different checksums; they are not identical files, they are intact from bnftp (edited)
martimarkov 01-Mar-19 11:23 PM
Yeah sorry my bad maybe they aren't PPC only but there are some PPC related stuff in there
The psistorm-XMAC-## are codesigned
The diff between psistorm and the ver-xmac seems to be a "breaking" change in the function name. In psistorm it gets decoded as _CheckRevision and in ver it gets decoded as .CheckRevision
So I guess when the diablo binary is calling it from ver it just can't find that func
But I think there might be another solution
When I captured the traffic between bnet and diablo I found that psistorm-XMAC-17 was always having the same value for the "equation" I just can't get it to correctly show up.
relesgoe 01-Mar-19 11:28 PM
what do you mean by correctly show up?
martimarkov 01-Mar-19 11:29 PM
This is the packet:
0000 8c 85 90 06 b9 f4 64 20 9f 12 9e ee 08 00 45 00 ......d ......E. 0010 00 72 08 e1 40 00 73 06 80 2e 05 2a b5 11 c0 a8 [email protected]....*.... 0020 03 93 17 e0 df f0 38 2b 67 bb 36 6a 0a 3f 80 18 ......8+g.6j.?.. 0030 01 04 0b 34 00 00 01 01 08 0a 83 5f b7 fe 0d 4f ...4......._...O 0040 de 19 ff 50 3e 00 00 00 00 00 cc 62 4b 08 d6 a9 ...P>......bK... 0050 33 00 00 10 a2 1c f9 9b d1 01 70 73 69 73 74 6f 3.........psisto 0060 72 6d 2d 58 4d 41 43 2d 31 37 2e 6d 70 71 00 16 rm-XMAC-17.mpq.. 0070 74 19 ab 65 32 cc e4 5b 92 2d e4 e0 58 03 cd 00 t..e2..[.-..X...
relesgoe 01-Mar-19 11:29 PM
it seems that psistorm is the mac equivalent of lockdown, which doesn't use strings anymore for the formula
so i would copy the bytes (which should still be 0-terminated) into the versioncheck.json file
i'm not sure if pvpgn is able to accept that input though
martimarkov 01-Mar-19 11:31 PM
yeah that's what I meant
and what I wanted to do
but PvPGN mangles them every time I tried
Caaaaarrrrlll 01-Mar-19 11:34 PM
noone knows how to do the non-string method? looks like that's 16 bytes terminated by null cause it's a string field
(not helping I know)
martimarkov 01-Mar-19 11:34 PM
maybe I'm not converting them correctly but I do think that PvPGN expects ASCII char
relesgoe 01-Mar-19 11:35 PM
@Caaaaarrrrlll the issue is probably the way pvpgn handles the string
martimarkov 01-Mar-19 11:36 PM
Yeah I think that is it
but I also looked at this: https://bnetdocs.org/document/47/checkrevision would you say it's relevant to this?
CheckRevision is a module sent by the server during the logon process. The purpose of CheckRevision is to ensure that only official, unmodified Battle.net clients are connecting to Battle.net servers.
relesgoe 01-Mar-19 11:36 PM
i'm the author of that document
martimarkov 01-Mar-19 11:36 PM
Specifically the last part about d2?
oh cool πŸ˜ƒ
relesgoe 01-Mar-19 11:37 PM
again, that's for windows
oh actually
Davnit 01-Mar-19 11:38 PM
i think i added the part about d2
relesgoe 01-Mar-19 11:38 PM
that's right
martimarkov 01-Mar-19 11:39 PM
Looking at the code of psistorm it also references warcraft 3 in there so if it's not already affected on Mac I guess it would soon be
relesgoe 01-Mar-19 11:40 PM
so the latest version of checkrevision (CheckRevision.mpq) doesn't have a mac equivalent
martimarkov 01-Mar-19 11:43 PM
This might be dumb but I thought that was the psistorm files
relesgoe 01-Mar-19 11:43 PM
look under the v2 section
that's where psistorm is at
CheckRevision.mpq is at v3
@Caaaaarrrrlll bnetdocs.org suggestion: automatically give headers an id attribute in html to allow for referencing via url
@martimarkov can you download https://github.com/pvpgn/pvpgn-server/blob/master/files/XMACver1.mpq and check the function name of checkrevision
Next generation of PvPGN server. Contribute to pvpgn/pvpgn-server development by creating an account on GitHub.
martimarkov 01-Mar-19 11:47 PM
That's the first file I tried with
but will check it now
Yeah .CheckRevision is the name
I think I'm going to go to bed as it's 7am in the UK now πŸ˜„
But tomorrow or on Sunday I'll try to patch PvPGN to NOT convert the string and just pass it on (edited)
Caaaaarrrrlll 02-Mar-19 04:00 PM
does bntrackd have to open a log file?
I'm trying to use -l /dev/stdout with systemd but it's failing
apparently /dev/stdout and /proc/self/fd/1 both do not exist under systemd services
how do I tell bntrackd to just print to stdout?
relesgoe 02-Mar-19 04:03 PM
bntrackd isnt able to handle doing that
the code is pretty coupled with pvpgn
Caaaaarrrrlll 02-Mar-19 04:06 PM
you're gonna force me to write to /var/log and create another log rotation rule? the horror
relesgoe 02-Mar-19 04:06 PM
i'm not even completely sure what bntrackd even does
Caaaaarrrrlll 02-Mar-19 04:07 PM
it listens for udp datagrams on port 6114 and writes it to a file so that php can read from that file
I read the code when I mentioned it here last time
Next generation of PvPGN server. Contribute to pvpgn/pvpgn-server development by creating an account on GitHub.
relesgoe 02-Mar-19 04:08 PM
seems like it could use a rewrite
Caaaaarrrrlll 02-Mar-19 04:09 PM
I'm okay with using /dev/shm/bntrackd for interprocess communication
I just don't want to use /var/log/bntrackd.log lol
now I'm tempted to go learn golang
looks so simple
relesgoe 02-Mar-19 04:15 PM
i heard go's language design isn't so great
rust would be a better language to learn, but for something so simple, python would do
Caaaaarrrrlll 02-Mar-19 04:16 PM
hmmm
niels 02-Mar-19 04:23 PM
Go is great for server stuff, the language is simple and straightforward
Nice stdlib and tooling as well
Caaaaarrrrlll 02-Mar-19 04:40 PM
fun.
now to parse that
what I have so far:
also python argparser is pretty neat, without modfying that code above I automatically get:
hmmm python struct "assumes native byte order"
I need to convert from big to little endian (edited)
Davnit 02-Mar-19 04:52 PM
pretty sure you can specify
Caaaaarrrrlll 02-Mar-19 04:53 PM
was just reading that page
Davnit 02-Mar-19 04:55 PM
if you're dealing with a byte array you can also just use the reversed() function
Caaaaarrrrlll 02-Mar-19 04:55 PM
oh thank goodness
that was my next question
This document covers how to successfully use the PvPGN tracker system with a custom unofficial Battle.net v1 server.
fun byte arrays
Davnit 02-Mar-19 04:56 PM
fortunately struct.unpack can pull all that out in one line!
Caaaaarrrrlll 02-Mar-19 05:01 PM
"The form '!' is available for those poor souls who claim they can’t remember whether network byte order is big-endian or little-endian." I feel personally attacked
relesgoe 02-Mar-19 05:02 PM
lol
Caaaaarrrrlll 02-Mar-19 05:03 PM
do I have to prefix ! for every int?
e.g. !H!H or just !HH
I think it's the former
Davnit 02-Mar-19 05:03 PM
just once
Caaaaarrrrlll 02-Mar-19 05:03 PM
oh ,weirdd
idea: fuck with anybody using python by using both little and big endian integers in a message
Davnit 02-Mar-19 05:04 PM
yea i've never seen anything like that lol
Caaaaarrrrlll 02-Mar-19 05:11 PM
what's the diff between s and p?
relesgoe 02-Mar-19 05:11 PM
s - p
Caaaaarrrrlll 02-Mar-19 05:11 PM
?
is that like a range or something?
relesgoe 02-Mar-19 05:11 PM
just messing with you
it was meant to be like a math expression
because you said difference
Caaaaarrrrlll 02-Mar-19 05:12 PM
lol
Davnit 02-Mar-19 05:12 PM
p is a string where the first byte is the length afaik
Caaaaarrrrlll 02-Mar-19 05:13 PM
oooooh
pascal string
!HHI32s16s32s64s64s96s64s64sIIIIII
should be correct then
Ribose 02-Mar-19 05:15 PM
holy shit what
Davnit 02-Mar-19 05:15 PM
yea that looks right
gonna have like 3 lines of variable names and then the actual function lol
Caaaaarrrrlll 02-Mar-19 05:16 PM
NameError: global name 'struct' is not defined thonking
from struct import * thonking (edited)
Davnit 02-Mar-19 05:17 PM
i usually just do
import struct b = struct.unpack(etc)
Caaaaarrrrlll 02-Mar-19 05:18 PM
hmm
yeah that worked
Press ENTER or type command to continue socket listening on 0.0.0.0:6114 received 464 byte(s) from 192.168.1.18:59283 received 464 byte(s) from 192.168.1.18:59283 received 464 byte(s) from 192.168.1.18:59283 received 464 byte(s) from 192.168.1.18:59283 received 464 byte(s) from 192.168.1.18:59283
neato it's not except'ing
Davnit 02-Mar-19 05:18 PM
clap
Caaaaarrrrlll 02-Mar-19 05:18 PM
Caaaaarrrrlll 02-Mar-19 05:28 PM
received 464 byte(s) from 192.168.1.18:59283 data_version=512, port=57367, flags=0, software=pvpgn, version=1.99, platform=Linux, description="BNETDocs PvPGN Server", location="Chicago, IL, USA", url=https://bnetdocs.org/, contact_name=BNETDocs Staff, [email protected], active_users=956628992, active_channels=704643072, active_games=0, uptime=2585853952, total_games=0, total_logins=3098869760 received 464 byte(s) from 192.168.1.18:59283 data_version=512, port=57367, flags=0, software=pvpgn, version=1.99, platform=Linux, description="BNETDocs PvPGN Server", location="Chicago, IL, USA", url=https://bnetdocs.org/, contact_name=BNETDocs Staff, [email protected], active_users=956628992, active_channels=704643072, active_games=0, uptime=2585853952, total_games=0, total_logins=3551854592
hmm
something's not in the right order
Davnit 02-Mar-19 05:28 PM
thats a lot of users
lol
Caaaaarrrrlll 02-Mar-19 05:29 PM
well I have my injector spamming the daemon
I think it randomizes those
but "512" should be 2
"57367" should be 6112
my injector's settings
buf.LittleEndian = True
😐
fixed
received 464 byte(s) from 192.168.1.18:61641 data_version=2, port=6112, flags=0, software=pvpgn, version=1.99, platform=Linux, description="BNETDocs PvPGN Server", location="Chicago, IL, USA", url=https://bnetdocs.org/, contact_name=BNETDocs Staff, [email protected], active_users=1337, active_channels=42, active_games=0, uptime=8927, total_games=0, total_logins=3335 received 464 byte(s) from 192.168.1.18:61641 data_version=2, port=6112, flags=0, software=DebugMy Application.exe, version=1.0.0.1, platform=Windows, description="An example server", location="United States", url=http://www.example.com/, contact_name=Example, [email protected], active_users=0, active_channels=13, active_games=0, uptime=8928, total_games=0, total_logins=6
(edited)
cool, so that's working
Caaaaarrrrlll 02-Mar-19 05:42 PM
{"active_games": 0, "active_channels": 13, "description": "An example server", "platform": "Windows", "url": "http://www.example.com/", "uptime": 9384, "total_games": 0, "data_version": 2, "version": "1.0.0.1", "flags": 0, "location": "United States", "contact_email": "[email protected]", "contact_name": "Example", "total_logins": 6, "active_users": 0, "port": 6112, "software": "DebugMy Application.exe"}
decided to use json
lol
Caaaaarrrrlll 02-Mar-19 06:22 PM
@relesgoe that PHP Tracker software is vulnerable to xss
Caaaaarrrrlll 02-Mar-19 06:40 PM
@relesgoe somebody put a giant fuck you on the tracker
OneMeanDragon 02-Mar-19 06:42 PM
lol someone wants to be icmp'ed off the tracker listing
Caaaaarrrrlll 02-Mar-19 06:43 PM
or maybe just fix the php
Vector 02-Mar-19 06:44 PM
O_O
oh dear
OneMeanDragon 02-Mar-19 06:48 PM
yes carl fix it so its not a set giant ass padded blob lol
LiquidWater 02-Mar-19 07:17 PM
for network endian conversion, theres a c func called ntoh and hton
host to network and network to host
cross platform and portable lib for host to network endian conversion
relesgoe 02-Mar-19 10:44 PM
i dont see the fuck you on the tracker
Caaaaarrrrlll 02-Mar-19 10:44 PM
we stopped sending bad data
@relesgoe check now
relesgoe 02-Mar-19 10:48 PM
i see
Caaaaarrrrlll 02-Mar-19 10:48 PM
it's there
πŸ˜„
sanitize the outputs
D:
relesgoe 02-Mar-19 10:49 PM
i dont control the tracker
Caaaaarrrrlll 02-Mar-19 10:49 PM
hmmm, what is your opinion of that then?
relesgoe 02-Mar-19 10:50 PM
of what exactly? (edited)
Caaaaarrrrlll 02-Mar-19 10:51 PM
that anyone can send it a script tag in the udp data and get their own webpage to be loaded by everyone who visits the tracker
Ribose 02-Mar-19 10:51 PM
Using this tracker you can find public PvPGN based Battle.net servers which you can use as alternatives to the Blizzard servers for all your favorite games including Starcraft/Broodwar, Warcraft II, III RoC/TFT, and Diablo I/II/LoD.
relesgoe 02-Mar-19 10:51 PM
it's obviously bad
relesgoe 02-Mar-19 11:29 PM
@cen do you sanitize the data for your tracker?
Caaaaarrrrlll 02-Mar-19 11:30 PM
so what's the end goal of me re-writing this pvpgn tracker?
Ribose 02-Mar-19 11:30 PM
myeolhleukwogs, ppwogkku
relesgoe 02-Mar-19 11:30 PM
To have yet another tracker, but one that at least uses https
Caaaaarrrrlll 02-Mar-19 11:31 PM
https for the pvpgn solicitation, or just for viewing in a web browser?
Ribose 02-Mar-19 11:31 PM
do you have a total number of trackers after his is complete
relesgoe 02-Mar-19 11:31 PM
Just viewing from the browser
Caaaaarrrrlll 02-Mar-19 11:31 PM
ah ok, so the tracking protocol needs not to change, got it
Ribose 02-Mar-19 11:31 PM
and how is his tracker going to get packets if they're all set to go to track.pvpgn
relesgoe 02-Mar-19 11:31 PM
@Ribose must be around 5
Caaaaarrrrlll 02-Mar-19 11:32 PM
well right now I have the tracker listening on bnetdocs.org but there's no web interface yet
relesgoe 02-Mar-19 11:32 PM
@Ribose pvpgn servers can be configured to send to multiple trackers
Ribose 02-Mar-19 11:32 PM
yes but how do you convince server owners to send elsewhere
or is it just hardcoded and you update upstream
relesgoe 02-Mar-19 11:33 PM
The latter
relesgoe 02-Mar-19 11:51 PM
Well not necessarily hardcored, any server owner can change what trackers they want to send the data to, it's just that we can change the default trackers for new releases
OneMeanDragon 03-Mar-19 01:24 AM
time to change the tracker after 10years lol
cen 03-Mar-19 10:54 AM
@relesgoe I think we render xml with some xslt for whatever reason (edited)
not sure if anything in xml data would be rendered to html, don't particularly care either until someone does. tracker is probably priority -99 πŸ˜„
Davnit 03-Mar-19 11:03 AM
i mean given what we saw last night it definitely does render
cen 03-Mar-19 11:03 AM
@Caaaaarrrrlll do you expose some kind of API for each documented packet? I am hacking around trying to write a js parser to decompose a wireshark hex dump to identify the packet and deconstruct it into readable form (kind of like bnetp) but I am not sure I want to bake all the packet info in the code (edited)
@Davnit we don't use the default renderer afaik, track.eurobattle.net
Davnit 03-Mar-19 11:04 AM
oh idk about that one
cen 03-Mar-19 11:04 AM
but Carl promised us a new web interface for tracker anyway πŸ˜›
Davnit 03-Mar-19 11:11 AM
cen 03-Mar-19 11:14 AM
nice, altho, packet format is a bit lackluster to parse
cen 03-Mar-19 01:46 PM
@Caaaaarrrrlll could you rework the packet format into an ordered array? with that it should be straightforward for me to identify and decompose the packet data
Caaaaarrrrlll 03-Mar-19 01:47 PM
you mean something like split by end of line?
that doesn't work for all packets
Ribose 03-Mar-19 01:48 PM
you'll get nonsense with peckets with subparts
I think having structured data would be nice
cen 03-Mar-19 01:48 PM
first solve the simple case, then figure out the complicated ones imo
Ribose 03-Mar-19 01:48 PM
and that's something that switching to confluence will lose, the API thing like that
whatever we do, having field-level structure would be more useful on the website as well
cen 03-Mar-19 01:52 PM
can you give an example of non-straighforward packet to parse? so I can think of solutions in advance
Caaaaarrrrlll 03-Mar-19 01:52 PM
This packet is received after successfully logging onto Battle.net and usually after receiving the first initial chat events. If the client does not respond to this packet, the client gets dropped two minutes later (give or take about 10 seconds).
This packet contains news from Battle.net. Timestamps are in C/Unix format, biased for UTC.
Ribose 03-Mar-19 01:54 PM
numerous
Davnit 03-Mar-19 01:54 PM
0x51
Caaaaarrrrlll 03-Mar-19 01:54 PM
Contains the EXE Version and Hash as reported by CheckRevision() and CDKey values.
Ribose 03-Mar-19 01:55 PM
anything with lists of repeated fields, conditional fields, etc (edited)
this 1
Caaaaarrrrlll 03-Mar-19 01:55 PM
well, the SID_READUSERDATA is fine and so is SID_GETCHANNELLIST
Ribose 03-Mar-19 01:57 PM
occasionally there are old documents we haven't updated lately that have descriptions in the formatting (like describing unique structures), but we should be removing those over time
Caaaaarrrrlll 03-Mar-19 01:57 PM
what we need is a way to represent data structures in a hierarchy
with repeatable options
Ribose 03-Mar-19 01:57 PM
repeated/conditional fields*
Caaaaarrrrlll 03-Mar-19 01:58 PM
I made a few tables in sql but never made anything concrete out of it
they're on my local dev
Ribose 03-Mar-19 01:58 PM
channel list/user data are just fields with regular arrays and can be represented simply
cen 03-Mar-19 01:59 PM
with SID_WARDEN you could also cheat and introduce variants, SID_WARDEN_0, SID_WARDEN_1 etc, but conditionals are more general (edited)
Ribose 03-Mar-19 01:59 PM
I think that's one way of understanding it, there's really only two general cases: conditional and repeated sub-structures, which can be nested
Caaaaarrrrlll 03-Mar-19 02:00 PM
the way that we were thinking would be having the format column in packets just reference an id instead that points to a data structure, then php builds that data structure automagically using the data in sql tables (edited)
Ribose 03-Mar-19 02:00 PM
and yeah, conditional should be like a "switch" statement in C
based on the value of one field, the sub-structure can be present
Caaaaarrrrlll 03-Mar-19 02:01 PM
right so a data structure would have a type field, a value field, and possibly link to another data structure
lemme paste the sql I had, one sec
what I have there only covers protocol headers
I never went into trying to represent packets
the data_structure_skeleton would be the knife to the butter that lets php be able to build those structures easily
so the packets table would be changed so format is an int instead of a text, that points to an id in data_structures. php can look up the data structure and get its skeleton
so all the packet formats would exist in the data_structures and data_structure_skeleton tables
packets that share similar structs could re-use a data struct id
cen 03-Mar-19 02:07 PM
yes, just needs extending with conditionals and loops
and gg
Caaaaarrrrlll 03-Mar-19 02:07 PM
e.g. sid_null and sid_ping (edited)
cen 03-Mar-19 02:08 PM
I volunteer some time to get this done, I need this for research as a pre-step
Caaaaarrrrlll 03-Mar-19 02:08 PM
I'll devote time to helping you get a dev env setup
cen 03-Mar-19 02:09 PM
phoenix branch is ok?
Caaaaarrrrlll 03-Mar-19 02:09 PM
yeah that's the "master"
Ribose 03-Mar-19 02:09 PM
a field would be something like type, name, conditional_if (value when a sub-structure may appear, probably just a string in the DB?), loop_n (number of times it's repeated, probably also just a string to display in the the "for x times")
a field then can point to a sub-structure
I'm thinking about this
probably needs to be done differently
a sub-structure might not directly follow the value relevant to its conditional or loop count (edited)
so that won't work
tonight maybe I'll get a dev env but I kind of want this feature and I'm not confident confluence can provide it and an API for it
Caaaaarrrrlll 03-Mar-19 02:13 PM
if we had this feature and built an api for it, it'd be pretty rad to build a bot that could "dynamically" update for protocol changes
that was Kyro's original vision with where he wanted to take labs.bnetdocs.org
Ribose 03-Mar-19 02:14 PM
hmm hmm wouldn't be that great with the dying systems
Caaaaarrrrlll 03-Mar-19 02:14 PM
yeah now D: it's way too late in the game
details a basic how-to of setting up a vm (edited)
cen 03-Mar-19 02:23 PM
I'll figure it out, I'll spam you if I have any problems
OneMeanDragon 05-Mar-19 08:08 PM
left a note on 0x51 for you
Myst 05-Mar-19 08:30 PM
0x51 (edited)
what pssoble notes coul d ther ebe
OneMeanDragon 05-Mar-19 08:42 PM
one that was never posted that i know of heh
Caaaaarrrrlll 05-Mar-19 08:54 PM
Davnit 05-Mar-19 08:54 PM
your comment is ambiguous
does it mean that the fields are there, but have "empty" (null) values, or does it mean that the field is not there at all and is truly empty
all i know is that when i modified stealthbot to login with starcraft after it removed keys i just didn't add anything there and went straight from spawn==false to exe info
Caaaaarrrrlll 05-Mar-19 08:56 PM
what
Davnit 05-Mar-19 08:56 PM
the other key-less games do not use 0x51 naturally so knowing their behavior is ???
Caaaaarrrrlll 05-Mar-19 08:56 PM
bnrbot uses 0x50/0x51 always
Ribose 05-Mar-19 08:56 PM
you sure it wasn't just "number of keys" 0, and that skips spawn?
Caaaaarrrrlll 05-Mar-19 08:56 PM
it sets number of keys to zero
Ribose 05-Mar-19 08:57 PM
that's how i interpreted that format
Davnit 05-Mar-19 08:57 PM
yea it works to do that but the games themselves do not
Ribose 05-Mar-19 08:57 PM
what
Davnit 05-Mar-19 08:57 PM
idk about skipping the spawn value i've never seen that
Ribose 05-Mar-19 08:57 PM
what
what game sends 0 keys ever
in that specific packet
Davnit 05-Mar-19 08:58 PM
none of them
Ribose 05-Mar-19 08:58 PM
scr uses a different protocol
so then the games themselves we don't know
Davnit 05-Mar-19 08:58 PM
thats what i said
Battle.net (pre-2.0) chat bot written in Visual Basic 6 - stealthbot/StealthBot
stealthbot just doesn't put anything there if there are no keys but builds the rest of the packet normally
and that worked for starcraft in the brief period that was a thing, which is the only evidence we have that i'm aware of
Ribose 05-Mar-19 09:01 PM
re-reading the original comment, it's consistent with that code, then
Davnit 05-Mar-19 09:01 PM
i find it ambiguous because an empty value is not defined for an integer
Ribose 05-Mar-19 09:01 PM
the fields are 0
Davnit 05-Mar-19 09:02 PM
that's not what the code does
Ribose 05-Mar-19 09:02 PM
"field is empty" != "field is missing"
Davnit 05-Mar-19 09:02 PM
well the field being missing is what worked
Caaaaarrrrlll 05-Mar-19 09:02 PM
Classic Battle.Net Realbasic Bot by @carlbennett, his flagship bot - carlbennett/BNRBot
Ribose 05-Mar-19 09:02 PM
empty means it still takes up space so then you'd assume 0 (but still weird to say "empty")
Davnit 05-Mar-19 09:03 PM
it's actually "empty" and the values take up no space
Caaaaarrrrlll 05-Mar-19 09:03 PM
i r smart n kan paste
Ribose 05-Mar-19 09:03 PM
ah, nvm, then dragon's comment is incorrect
his first part implies the cd-key repeated part is empty instead of missing
Davnit 05-Mar-19 09:04 PM
also this is off-topic for this channel and belongs in #botdev
upvote 1
Ribose 05-Mar-19 09:04 PM
which i misread as the cd-key count (edited)
k
OneMeanDragon 06-Mar-19 10:33 PM
empty = ""
Davnit 06-Mar-19 10:35 PM
how does that translate to an integer
Caaaaarrrrlll 06-Mar-19 10:39 PM
what server are you sending that 0x51 to
if it's anything other than *.battle.net, I don't buy that it's accepted as truth
(I don't wanna get myself ip banned either to try it out)
Caaaaarrrrlll 09-Mar-19 11:37 PM
pvpgn-tracker.bnetdocs.org:6114
Caaaaarrrrlll 10-Mar-19 12:37 AM
also we should totally make a new version of that tracker datagram structure. I propose what I put as a comment: https://bnetdocs.org/document/35#comments (edited)
This document covers how to successfully use the PvPGN tracker system with a custom unofficial Battle.net v1 server.
Caaaaarrrrlll 10-Mar-19 12:55 AM
TIL pvpgn solicits every second
not a big deal since that shared state file is in RAM (edited)
Caaaaarrrrlll 10-Mar-19 06:16 PM
hey looky it still works
my pvpgn is still reporting in
and my injector fell off the list
I added all of the country flags yesterday
if a user tries to use a country flag that doesn't exist, it uses their geoip information (edited)
If their geoip information isn't available, it uses a pirate flag
Caaaaarrrrlll 10-Mar-19 07:34 PM
You can also now hover over a country flag to see the country name
Also if they use an empty location string but still specify a custom flag (e.g. :CA), it will use the country name as their location (e.g. Canada)
An empty location should never be possible
On a separate note, I do still need to add games/product icons
cen 13-Mar-19 12:54 PM
good job carl, looks nice
I added my .pro experimental server
You should add sorting
Caaaaarrrrlll 13-Mar-19 12:54 PM
I still have some todos
search is completely non-functional
there's no pagination
cen 13-Mar-19 12:56 PM
it's good first step
Caaaaarrrrlll 13-Mar-19 01:23 PM
also looks like I need to do something when email is invalid, your email says mailto:unknown
cen 15-Mar-19 03:05 AM
not a fan of pasting email on public websites πŸ˜ƒ
OneMeanDragon 15-Mar-19 08:03 PM
lol
Myst 15-Mar-19 08:43 PM
use proton email
ProtonMail is the world's largest secure email service, developed by CERN and MIT scientists. We are open source and protected by Swiss privacy law
thonking 2
Caaaaarrrrlll 15-Mar-19 08:48 PM
Might as well just use another Gmail account
ProtonMail is a sellout to the government
Caaaaarrrrlll 15-Mar-19 10:12 PM
fixed when users use unknown or an invalid email
btw, unknown is the default value of contact_email for PvPGN (for those reading along) - https://github.com/pvpgn/pvpgn-server/blob/master/conf/bnetd.conf.in#L415-L434
Qndel 16-Mar-19 11:45 AM
I'm just wondering
does gog really have its own copy of bnet running or is it a pvpgn server? πŸ˜„
is there any way to check? xD
Qndel 16-Mar-19 11:56 AM
but if they used pvpgn, would there be a way to know? πŸ˜›
it'd be hilarious πŸ˜„
well didn't it work the same as bnet for d1?
at least I don't know the difference
okay : P well I just had this thought when I saw that gog included ipxwrapper
I was like 'what if all in this release is community work' xD (edited)
Lex 16-Mar-19 12:21 PM
Ya it doesn't seem to be an blizzard server. In the sense that it seems to have a lot of bugs that used to be in unofficial servers that got fixed years ago.
Humm, maybe they re-wrote the server on their end.
Lex 16-Mar-19 12:31 PM
Interesting, I just remember the 'put everyone in their own landing channel' issue being one from years ago.
Ribose 16-Mar-19 01:03 PM
right, with Warcraft 3
they tried to fix it several times after it started coming up after they modernized w3 (the first compatibility patches in ... 2016? 17?)
I feel like one of the conclusions of all that was changing the landing channels from region-based (USA) to language-based (En)
I guess the Diablo 1 thing brought back the distribution problem again
xpeh 20-Mar-19 05:32 PM
Does someone use new pvpgn at all?
relesgoe 21-Mar-19 03:54 PM
xpeh 21-Mar-19 04:02 PM
Is that all? How about servers like iccup or playground.ru?
relesgoe 21-Mar-19 04:03 PM
iccup doesnt report to any trackers
Using this tracker you can find public PvPGN based Battle.net servers which you can use as alternatives to the Blizzard servers for all your favorite games including Starcraft/Broodwar, Warcraft II, III RoC/TFT, and Diablo I/II/LoD.
xpeh 21-Mar-19 04:04 PM
Which of them is using new pvpgn and how much users online?
relesgoe 21-Mar-19 04:05 PM
look at the version numbers and count
xpeh 21-Mar-19 04:08 PM
The biggest ones use 1.8.x. Only eurobattlenet uses 1.99, but not pvpgn pro.
So noone of big servers will ever use pvpgn.pro. They all use 1.8.x with lots of custom modifications.
xpeh 21-Mar-19 04:51 PM
No big server is even using srp loader
cen 22-Mar-19 03:37 PM
We might switch to pro for tournament support and some other hackery (bot integration) but it's not an easy task and will take time. Either way, pro is a good playground for testing stuff and playing around. (edited)
xpeh 22-Mar-19 03:53 PM
@cen are you from eurobattlenet?
cen 22-Mar-19 03:59 PM
yes
xpeh 22-Mar-19 04:01 PM
Is friend list bound to game?
cen 22-Mar-19 04:02 PM
I don't know, we only host w3
xpeh 22-Mar-19 04:04 PM
Your crappy loader 1) overwrites the whole server list 2) shits into drive root 3) uninstaller doesn't get everything back. There is no way I would ever run it not inside VM
pehpeh 2
cen 22-Mar-19 04:05 PM
your choice ^^
LiquidWater 22-Mar-19 04:06 PM
that sounds awful
xpeh 22-Mar-19 04:07 PM
I had to restore changes it made by hand. Wtf is this? Thanks for that it hasn't onstalled me some virus.
What schoolboy made this?
xpeh 23-Mar-19 01:32 PM
@xpeh " Is friend list bound to game?" lol, crappy stealthbot just hides offline friens by default
Davnit 23-Mar-19 02:10 PM
Battle.net (pre-2.0) chat bot written in Visual Basic 6 - stealthbot/StealthBot
Ribose 23-Mar-19 02:17 PM
what about it
OneMeanDragon 23-Mar-19 03:01 PM
xpeh edit the loader code then lol
its on github
OneMeanDragon 23-Mar-19 03:22 PM
the server signature is rsa encrypted yes-no? (edited)
xpeh 23-Mar-19 03:52 PM
@OneMeanDragon why should I edit it?
OneMeanDragon 23-Mar-19 04:30 PM
pretty sure the loader was a seperate entity
xpeh 23-Mar-19 04:45 PM
Don't get what it does with our talk to do
cen 18-Apr-19 11:57 AM
I am playing around with telnet client in javascript and instead of ...... 1001 USER <username> <flags> [<product>] upon channel enter I am getting a simple text: [cen1 is here] wat?
cen 18-Apr-19 01:18 PM
is there some weird telnet chat protocol "simplified text only" version? for the love of God.. or maybe a "pvpgn simplified" flavour (edited)
cen 18-Apr-19 01:29 PM
yeah indeed, if 0x03 is not send as first byte I can connect in some weird not-telnet-chat protocol. if someone knows what it is be my guest
Caaaaarrrrlll 18-Apr-19 01:42 PM
I know there's various implementations of the "chat protocol"
nobody does it like it was documented
and official b.net doesn't allow it anymore so nobody can prove the documentation is correct
everybody went their own way with implementation of that and tested it on only a handful of bots
"it works call it a day" (edited)
but most of the bots are pieced together with shitty code in the first place
tl;dr good luck
pvpgn is probably closest to the real deal
cen 18-Apr-19 01:46 PM
apparently pvpgn supports "both", I'll dig into the code what pvpgn does if 0x03 is not sent when I get super bored of this bullshit xD
murphy laws are strong in bnet
relesgoe 11-Jul-19 03:14 PM
@cen https://github.com/pvpgn/pvpgn-server/issues/384 did you compile with Clang 6.0.0?
:$ cd pvpgn-server &amp;&amp; cmake -G &quot;Unix Makefiles&quot; -H./ -B./build -- The CXX compiler identification is Clang 6.0.0 -- Check for working CXX compiler: /usr/bin/c++ --...
cen 11-Jul-19 03:16 PM
ah I see..
edited the comment to use gcc, I can dabble in clang later issues. but it looks like his setup is non bueno (string.h not found)
relesgoe 11-Jul-19 03:18 PM
<string> isn't found, not string.h
cen 11-Jul-19 03:19 PM
both should be resolvable if include paths are properly set
relesgoe 11-Jul-19 03:19 PM
true
cen 11-Jul-19 03:19 PM
I wonder how he got clang as his default compiler.. maybe he got confused with debian readme
maybe I should remove that part to not confuse people and have it in differet section
use gcc as default in all instructions
relesgoe 11-Jul-19 03:45 PM
I'm trying to set clang++ as the system C++ compiler on Fedora 18. I have installed clang and added it to alternatives but it doesn't appear to be working. [user@localhost ~]$ alternatives --displ...
I wonder who Kernel86 is
cen 11-Jul-19 04:07 PM
who are you referring to?
relesgoe 12-Jul-19 09:29 AM
whoever is running this tracker http://track.muleslow.net/
Using this tracker you can find public PvPGN based Battle.net servers which you can use as alternatives to the Blizzard servers for all your favorite games including Starcraft/Broodwar, Warcraft II, III RoC/TFT, and Diablo I/II/LoD.
cai_miao 26-Oct-19 08:35 AM
hello guys, can i just
use address translation to solve gs ip that realm returns
in this case #35:1111 #59:4000 NONE ANY
jaenster 26-Oct-19 08:40 AM
πŸ€” is this channel new? (edited)
cai_miao 26-Oct-19 08:40 AM
idk
jaenster 26-Oct-19 08:41 AM
Nah im just crazy, its quite inactive πŸ€” and due to the colors, it might been private before
Caaaaarrrrlll 26-Oct-19 03:14 PM
this channel was never private
well, it was private for like a few months at most
back in early 2018
this channel exists cause pvpgn dev work was going on in this discord and they wanted their own channel πŸ™‚
@relesgoe or @cen can answer @cai_miao 's question if it's related to pvpgn
cai_miao 27-Oct-19 06:21 AM
assuming it works and correct ip are sent back to clients, i dunno if pvpgn can correctly receive packets sent from proxy (of gs)
as they can't mask packets while they assume that will ruin things
cen 27-Oct-19 10:35 AM
All I know about address translation is that the entry will be sent to clients for w3route protocol, I have no idea about d2gs. I doubt anyone else does apart from what is already written in config doc.
Davnit 27-Oct-19 10:37 AM
maybe @Kaylin ?
cai_miao 28-Oct-19 12:31 AM
i would need this work as packets directly sent to the PVPGN server is generally get lost and causing frequent disconnections, because of long physical distance plus udp packet random jam (edited)
and more i can't really use any vpn (at least, known) to setup a private network as gs is in mainland china and such packets would likely be blocked
jaenster 28-Oct-19 05:18 AM
Pvpgn is tcp?πŸ€”
relesgoe 28-Oct-19 08:43 AM
I'm not really familiar with the address_translation.conf file
and yeah, pvpgn is tcp
cen 28-Oct-19 09:56 AM
@cai_miao why not just buy a cheap VPS to host pvpgn?
cai_miao 28-Oct-19 09:57 AM
because it's MedianXL's case
cen 28-Oct-19 09:59 AM
what does that mean?
cai_miao 28-Oct-19 10:00 AM
their server is in germany, i donated a gs to them and the connection issue annoys our folks..
and pvpgn can't just move to east for you know why
i'm not so familiar with pvpgn too, but as a result we do suffer from such bad connection between gs/pvpgn
when there're more ppl in game, the easier gs disconnects clients (edited)
i don't really understand each function/mechanism of pvpgn/gs so i'd expect more knowledge here, as the question is quite complicated and eventually the solution will be actually applied in production (edited)
cen 28-Oct-19 10:41 AM
pvpgn implements chat/clans/game listing only so the load is actually pretty lean, it does not host anything (games).
I guess gs is the actual game server that must keep players up, not pvpgn
so if I understand correctly pvpgn is hosted on germany server and you host game server (d2gs) on your own infrastructure? where is that? (edited)
I am not sure what exactly is shared between d2gs<->pvpgn but I guess it would be ideal to have them on the same host?
cai_miao 28-Oct-19 07:39 PM
if i have to say more accurate: d2cs/d2dbs, they are both provided by pvpgn toolset (edited)
owned gs is in shanghai
except for character saves, they also have more customization on pvpgn/gs so there may be more information returns to realm (edited)
there's no problem between gs and clients, no one suffers from lags, only disconnects everyone in the same time, gs is actually not crashed. (edited)
Kaylin 29-Oct-19 07:23 AM
Hi just saw this. I am not sure what's being asked tbh. There's no requirement any of the components be on the edge or same subnet but that's surely not what you're asking.
Inhuman 29-Oct-19 08:03 AM
they are annoyed because they have lag
it's normal
if we say that you're from china and the german folks bought vps located in germany with your money (edited)
its possible to have shitty connection
πŸ™‚
the solution is vps located in your country to have low latency
I've hosted realms with more than 100 people and gs's located in different countries (edited)
there was no disconnect problem
cai_miao 29-Oct-19 08:40 AM
i own a china vps and they took exclusive control of my vps
current problem is packet loss between pvpgn(cs/dbs) and gs, as they connect directly (edited)
currently i suppose using another vps in asia (they owned for gs) to redirect all these packets back and forth (act as a tunnel) (edited)
as for connection quality: china gs <-> pvpgn bad another vps <-> pvpgn fairly stable china gs <-> another vps fairly good, with a little loss but generally tolerable (edited)
current point to solve: 1. will address translation send back real gs ip back to client while pvpgn(cs/dbs) actually send packets to pseudo gs ip/1st port 2. will pvpgn(cs/dbs) correctly receive packets from pseudo gs ip/2nd port (edited)
cai_miao 29-Oct-19 09:01 AM
and i'd explain china <-> europe is generally bad because of routing and great firewall, cost of high-quality routing is expensive as chinese networking is too complicated (when isp have to maintain a highly usable network all over china and provide them at a reasonable price), and the firewall always random eats some packets (edited)
Inhuman 29-Oct-19 09:05 AM
there is no adress translation when your d2gs is on different host you have to use public ip only
the only solution is to find provider that suit your needs
cai_miao 29-Oct-19 09:07 AM
did you see my picture
i would use a local port to receive gs packets , then send them to the tunnel server (edited)
as that is a local port, you do host it
the rest of problem is only receive/send correct packets (edited)
Inhuman 29-Oct-19 09:24 AM
I now saw the picture I can't help you with that :/
why do you routing it that way ?
cai_miao 29-Oct-19 09:27 AM
more stable than directly connect
only reason