搜索
查看: 3681|回复: 6

关于Steam过期的技术文献

[复制链接]
发表于 2005-1-24 11:04:42 | 显示全部楼层 |阅读模式 来自 福建龙岩
这是著名hCUPa的言论,虽然目前无法验证,但是我知道其中一些说法是正确。
不要和我毫无目的的争论,我也是一个学习者。:43:

原文链接 http://cs.rin.ru/forum/viewtopic.php?t=10386

文章内容:
--------------------------------------------------------------------------------
I noticed many people screaming the biggest non-sense about how steam works and how the ticket is is caused or prevented.

It seems its a good idea to finally explain how exactly steam works.
All current solutions are using my emulator anyways, yes, even Emporio uses the 2.63 emulator. They just ripped the DLL and patched it to work without the .ini file, even the linux .so was copied.
So there's no need to fight over GCF / non-gcf methods as there is no difference.

Q: So what was changed client side during the last steam update which caused the ticket error?
A: Nothing, code-flow wise the client side is not doing anything different at all.

Q: Why do I suddenly get a ticket error then?
A: Tickets are now checked more thoroughly on the Valve authentication server, there is nothing you can do about that.

Q: So how does it work technically then?
A: The process is divided in a few steps


    * The client requests an encrypted user ID ticket using SteamGetEncryptedUserIdTicket from steam.dll, this gives back a ticket which has been digitally signed and encrypted. The ticket contains information such as the client ip, expiration date etc.

      Now, since the last update it would seem that the ticket is immediately expired if you do not have any registered games on your account.

    * The ticket itself is game independant, so essentially a ticket requested for a Half-Life 1 game is valid to play with on Source games too.

    * When a client logs on to a server, it sends the ticket to the server.
      The server calls SteamOnlineTicketValidator() which forwards the ticket (unchanged) to the authentication server and then the server waits for the result.

    * Since this validation is server-side it means you cannot do anything about it client-side.



Q: If tickets are game independant, why not just request a ticket from the valve authentication server for like Codename: Gordon, or Half-Life 2 demo?
A: All of the free games on the steam game list are blocked from requesting tickets since the last update.

Q: But I read about some people being able to play online just fine without ticket error? Does this have to do with their clientregistry.blob?
A: Yes, some people have corrupted tickets, which have expiration dates still in the future, somehow the validation still lets these through, i.e. it checks the expiration date first, and only if its nearly expired the rest of the ticket. This is why some people can play online.

Q: I read that someone did "trick X" and he said it worked, but it doesn't work for me?
A: The ticket validation process goes over UDP, which means its a non-reliable protocol. Now if the server you are trying does not get a reply from the valve authentication server in time, due to the authentication server being busy for example, or the server being in some distant location and unable to connect to the master server, then the server will let you on regardless of the ticket.
This is how most games work, otherwise no-one would be able to play if the valve authentication servers were down.
So if the authentication servers are down, everyone can play.

Q: Can this not be fixed by a new ppatcher?
A: No ppatcher can only change things clientside, and the ticket check as explained as totally server side.

Q: The trick I read a lot about, that mIRC trick, how does it work?
A: The clientregistry.blob contains dates about when a ticket was last updated, when server addresses and ports were last stored etc. Now the mirc patch changes these dates into the future constantly. Funnily enough, its not the date changing that causes this trick to work for some. Its actually the client being unable to access the clientregistry.blob because its clashing with mirc, this makes the chance of the server remote timeout happening slightly bigger. This might be expoitable temporarely by causing the client wait all the time instead of just when it clashes with mirc.

Q: So whats the only 100% working solution for now?
A: Cracked servers are the only 100% working solution, as a cracked server will not disconnect clients with invalid tickets, nor will it send them to the master server to check.
This means valve has no direct influence to do anything about it.

Q: What is the best thing to do now?
A: Well I have been reading Hellbosses idea, and its technically possible to extend the Steam emulator to emulate steam even more fully. This will mean that you can actually use the normal steam client on the emulator, and everything would work like normal. Though obviously you can only play on emulated/cracked servers then.

Q: Does the new ticket fix trick where you have to register with a HL2 key work?
A: Yes, as it obviously uses the same trick as using a valid HL1 key.
Steam will register you as having purchased the game, and thus you will receive a valid ticket. This will mean however your ip most likely pops up in red in the valve logs. And it is fixable on their side.

P.S. I hope this will clean up a lot of misunderstandings, and a myriad of posts.

However, if you do have a method which you have thoroughly tested, and want me to help and/or put it into more usable code, just let me know.
--------------------------------------------------------------------------------
 楼主| 发表于 2005-1-24 11:05:22 | 显示全部楼层 来自 福建龙岩
大家可以自己学习下。:wink:

我说下我的理解:
1、Ticker是一个验证码,具有时效性。是客户端发送到服务器后,再由服务器发送到Auth服务器来验证的工作模式。
发送的内容有玩家的SteamID,IP以及Date等一些信息,按照一定算法生成。

目前不发送玩家合法的游戏ID,因此一些HL,CZ,CS的用户可以玩CSS的游戏。

2、正由于这样的工作的模式,我们知道服务器在这个验证过程的重要性。如果服务器同时接受non-steam的客户端以及正版Steam客户端的信息,而过滤non-steam的验证。我想non-staem就不会出现Ticker过期了。

3、目前hCUPa正准备做这方面的工作,计划开发Emu Server,现在可以看到Linux Emu Server 0.2了。

:thefinger
回复

使用道具 举报

 楼主| 发表于 2005-1-25 12:12:34 | 显示全部楼层 来自 福建龙岩
非常有用的ServerIP地址。
============================================
The Main Servers your Steam needs to Connect to Steam gateway:
--------------------------------------------------------------------------
207.173.177.11:27030
207.173.177.12:27030
69.28.151.178:27038
69.28.153.82:27038
68.142.88.34:27038
68.142.72.250:27038

Master Ports:
-----------------
:27131
:27231

Master Servers:
--------------------
207.173.177.11 (hlmaster1.hlauth.net)
also goes by: (steam1.steampowered.com)

207.173.177.12 (steam2.steampowered.com)

*those only two servers are the ones that your Steam.exe uses to communicate with Steampowered.

some more Master Servers:
----------------------------------
207.173.177.13 (steam3.steampowered.com)
207.173.177.14 (steam4.steampowered.com)
207.173.177.15 (steam5.steampowered.com)
207.173.177.16 (steam6.steampowered.com)
207.173.177.17 (steam7.steampowered.com)
207.173.177.18 (steam8.steampowered.com)
207.173.177.19 (steam9.steampowered.com)
207.173.177.100 (steam10.steampowered.com)
207.173.177.120 (steam12.steampowered.com)
207.173.177.130 (steam13.steampowered.com)
207.173.177.140 (steam14.steampowered.com)
207.173.177.150 (steam15.steampowered.com)

now for More Servers:
----------------------------
(A)
----
68.142.88.33 (gblx-valve-router.ams.gblx.net)
68.142.88.249 (valve-ams2.gblx.net)
68.142.88.250 (valve250.ams.llnw.net)
68.142.88.251 (valve251.ams.llnw.net)

(B)
----
207.173.177.42 (friends2.valvesoftware.com)
207.173.177.43 (friends3.valvesoftware.com)
207.173.177.44 (friends4.valvesoftware.com)
207.173.177.45 (friends5.valvesoftware.com)
207.173.177.46 (friendsdb1.valvesoftware.com)
207.173.177.47 (friendsdb2.valvesoftware.com)

(C)
----
207.173.176.1 (deathstar.valvesoftware.com)
207.173.176.2 (xwing.valvesoftware.com)
207.173.176.130 (ns1.valvesoftware.com)
207.173.176.133 (smtp2.valvesoftware.com)
207.173.176.141 (pressweb.valvesoftware.com)
207.173.176.142 (cafes.valvesoftware.com)
207.173.176.143 (www.cs-conditionzero.com)
207.173.176.144 (valvesoftware.com)
207.173.176.145 (www.opposingforce.com)
207.173.176.147 (www.dayofdefeat.net)
207.173.176.148 (www.half-life.com)
207.173.176.149 (www.modexpo.com)
207.173.176.150 (www.team-fortress.com)
207.173.176.151 (www.mennet.net)
207.173.176.152 (csadmin.steampowered.com)
207.173.176.154 (steampowered.com)
207.173.176.199 (smtp3.valvesoftware.com)
207.173.176.201 (smtp1.valvesoftware.com)
207.173.176.202 (list.valvesoftware.com)
207.173.176.203 (ns2.valvesoftware.com)
207.173.176.250 (ftp.valvesoftware.com)
207.173.178.5 (mail.cs-conditionzero.com)
207.173.178.43 (smtp1.valvesoftware.com)
207.173.179.28 (signup.steampowered.com)
===============================================
回复

使用道具 举报

发表于 2005-1-25 12:48:07 | 显示全部楼层 来自 陕西西安
看了后,我想valve和我一样发冷汗呢,呵呵
回复

使用道具 举报

发表于 2005-1-25 17:41:08 | 显示全部楼层 来自 宁夏银川
Post by 金闪闪
现在Emporio与hCUPa联手。

估计会利用steamengine.exe来完成本地Ticker的破解,然后用steam.dll来完成网上验证。:43:

就是说,可能出现一个暴力穷举Auth服务器的本地程序。不停的与Auth穷举。直到一个有效的Ticker。

当然生成Ticker后,就不再与Auth通讯了。:wink:



....这个有点狠
回复

使用道具 举报

发表于 2005-1-26 13:31:57 | 显示全部楼层 来自 天津
哇,那STEAM的服务器瘫了我们是不是就登陆不上去啦?
回复

使用道具 举报

 楼主| 发表于 2005-1-31 10:39:30 | 显示全部楼层 来自 福建龙岩
在3楼提供了非常有用的Steam服务器IP地址。

当出现无法登陆时候,基本上是无法访问这些IP。:13:
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表