<?xml version="1.0"?>
<rss version="2.0"><channel><title>Releases Latest Topics</title><link>https://nocodenolife.org/forum/92-releases/</link><description>Releases Latest Topics</description><language>en</language><item><title>Zemyna - Client proxy</title><link>https://nocodenolife.org/forum/topic/128-zemyna-client-proxy/</link><description><![CDATA[
<p>
	Zemyna acts as a kind of proxy, it makes the client connect to a special local server that forwards all packets from the client to the actual server. This way it's able to read every single packet that gets sent or received. These packets can then be passed to other applications, so they can work with them, e.g. loggers like <a href="https://nocodenolife.org/forum/topic/129-paletree-packet-logger-v100-i10911/" rel="">PaleTree</a>.
</p>

<p>
	If you're familiar with <a href="https://nocodenolife.org/forum/topic/40-morrighan-client-proxy-updated-2015-05-16-v135/" rel="">Morrighan</a>, you will feel right at home here.
</p>

<p>
	<span style="font-size:16px;"><a href="https://github.com/exectails/Zemyna/releases" rel="external nofollow">Download</a></span>
</p>

<p>
	<span style="font-size:14px;">Remember to regularly update PaleTree and Zemyna whenever one is available, as they need to be up-to-date to work with the latest client.</span>
</p>

<p>
	<span style="font-size:16px;"><strong>How to use</strong></span>
</p>

<p>
	For Zemyna to be able to read packets, it needs control over the starting process, as it temporarily adjusts your client, to tunnel its connection. It does so by making a backup of your client.xml, that contains information about where to connect to, and creates a new one. This change is reverted once Zemyna closes, this way you don't have to fiddle with any files yourself.
</p>

<p>
	To tell Zemyna where to connect the client to, you use command line parameters. For example, let's say you wanted to log packets on the international server Laima, you would simply start it like this from the command line, after moving Zemyna to your game folder:
</p>

<pre class="ipsCode">
Zemyna.exe host:54.88.25.242 port:2000</pre>

<p>
	The IP and port are of the login server for Laima. For easier reusability, you should create a link or bat file. Zemyna will then take the necessary steps to be able to read packets from the network, and start the client. A small window in the upper left corner will show you that Zemyna is running, it closes automatically when the client gets closed. You can also double click it to quickly close Zemyna and the client.
</p>

<p>
	Since you can only have one server in the server list this way, the one you specify in the parameters, you could create multiple links/bats, one for each server.
</p>

<p>
	If you want to use Zemyna on a server that doesn't use the Steam auto-login, but a login interface, you have to tell it, with another parameter. For example, connecting to a local server:
</p>

<pre class="ipsCode">
Zemyna.exe host:127.0.0.1 port:2000 nosteam</pre>

<p>
	<span style="font-size:16px;"><strong>How to connect to Zemyna</strong></span>
</p>

<p>
	Zemyna uses the same API as the tool it was inspired by, "Alissa". It uses WM_COPY messages to communicate between Zemyna's and the subscriber's window. To subscribe to Zemyna, to receive packets, you send the "op" (dwData) 100 to Zemyna's window (window name: "mod_Tossa"), to unsubscribe, you send 101. While you're subscribed, you receive all incoming (op 0x10101012) and outgoing (op 0x10101011) packets via the same method.
</p>

<p>
	For an actual example on how this works, I suggest looking at the corresponding <a href="https://github.com/exectails/PaleTree/blob/master/PaleTree/FrmMain.cs#L561" rel="external nofollow">functions in Pale</a>. Alternatively you can also create a plug-in for Pale, which will be easier.
</p>

<p>
	<span style="font-size:16px;"><strong>Restrictions</strong></span>
</p>

<ul><li>
		Zemyna currently only supports the Login and Channel servers.
	</li>
	<li>
		Due to ToS's protocol, Zemyna needs to be updated regularly, or there's a high chance for it not to function correctly. Check for updates after each game patch and report potential issues.
	</li>
</ul><p>
	<span style="font-size:16px;"><strong>Korean TOS</strong></span>
</p>

<p>
	If you click on Download, you will find multiple versions, one of them being for kTOS (notice the "k" prefix). Choose that one if you want to log packets on the Korean server.
</p>

<p>
	Due to kTOS using a web login, we had to do things a little differently for the Korean version of Zemyna. You need an additional argument, "kr", which activates certain KR only options. Example:
</p>

<pre class="ipsCode">
Zemyna.exe host:54.88.25.242 port:2000 kr</pre>

<p>
	After you started Zemyna like that, the client won't start automatically, but it will still modify the client files, so when you finally start the client via the web login, the connection will still go through Zemyna, allowing you to log packets using PaleTree.
</p>
]]></description><guid isPermaLink="false">128</guid><pubDate>Tue, 01 Dec 2015 18:43:33 +0000</pubDate></item><item><title>PaleTree - Packet Logger</title><link>https://nocodenolife.org/forum/topic/129-paletree-packet-logger/</link><description><![CDATA[
<p>
	PaleTree is a packet logger that utilizes data coming from packet providers, like <a href="https://nocodenolife.org/forum/topic/128-zemyna-client-proxy-v100-i10911" rel="">Zemyna</a>.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="79" href="https://nocodenolife.org/forum/uploads/monthly_2015_12/565deb35d7454_ss(2015-12-01at07.46.47).png.b4b48f74205a9ae88b75e3f0ebeef904.png" rel=""><img alt="ss+(2015-12-01+at+07.46.47).png" class="ipsImage ipsImage_thumbnailed" data-fileid="79" src="https://nocodenolife.org/forum/uploads/monthly_2015_12/565deb3703552_ss(2015-12-01at07.46.47).thumb.png.a075d67b06eb69b04dedf395a5f39a2b.png" style="width:450px;height:306px;" /></a>
</p>

<p>
	Just like its cousin <a href="https://nocodenolife.org/forum/topic/220-mabipale-packet-logger/" rel="">MabiPale</a>, PaleTree allows you to log packets, and save, load, and modify the logs. However, unlike MabiPale, you won't see clear, separated variables here, as ToS's protocol doesn't communicate this information. Instead, PaleTree features a hex editor on the right side, and it has a plugin to show which values might hide behind a bunch of random bytes, starting at the selected index. For deeper analysis, a tool like 010 Binary Editor is recommended.
</p>

<p>
	Another difference to MabiPale, is that due to the availability of op codes, there are no unknown ops, and in case of changes, the ops are saved inside the logs, so you never have to worry about incorrect op names. But you should update PaleTree regularly, since any change in an op could result in confusing data.
</p>

<p>
	<span style="font-size:16px;"><a href="https://github.com/exectails/PaleTree/releases" rel="external nofollow">Download</a></span>
</p>

<p>
	<span style="font-size:14px;">Remember to regularly update PaleTree and Zemyna whenever one is available, as they need to be up-to-date to work with the latest client.</span>
</p>

<p>
	<span style="font-size:16px;"><strong>Features</strong></span>
</p>

<ul><li>
		Logging packets
	</li>
	<li>
		Saving logs
	</li>
	<li>
		Log management (deleting, filtering)
	</li>
	<li>
		Plugin system
	</li>
	<li>
		Official plugins:
		<ul><li>
				Variable Preview: Displays what values could be read from a packet, starting at the selected byte.
			</li>
		</ul></li>
</ul><p>
	<span style="font-size:16px;"><strong>How to use</strong></span>
</p>

<ul><li>
		Put Zemyna.exe into your ToS folder
	</li>
	<li>
		Create a link to Zemyna.exe, using parameters for the appropriate server. For example to connect to the international server Laima, you would use Laima's login server IP and port:
		<pre class="ipsCode">
Zemyna.exe host:54.88.25.242 port:2000</pre>

		<p>
			And to connect to a local server, without Steam auto-login, but with a login form, you would use this:
		</p>

		<pre class="ipsCode">
Zemyna.exe host:127.0.0.1 port:2000 nosteam</pre>
	</li>
	<li>
		Start the client with that link whenever you want to log packets.
	</li>
	<li>
		Click connect in Pale to subscribe to Zemyna's packet broadcast and to start logging packets.
	</li>
</ul><p>
	<span style="font-size:16px;"><strong>Packet data</strong></span>
</p>

<p>
	The packet data in the hex editor is always the raw data received/sent by the client, incl. packet header. This means the actual values don't start at the first byte.
</p>

<p>
	Packets from the client to the server have a 10 byte header:
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="kwd">short</span><span class="pln"> op</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> sequence</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> checksum</span><span class="pun">;</span></pre>

<p>
	Packets from the server to the client are the same, just without the checksum, so it's 6 bytes in total. Additionally, packets that don't have a fixed size have another short (2 byte) before the actual data, the length of the entire packet. Packets that have a fixed length will say something like "Size: 50 (Table: 50, Garbage: 0)" in the packet information on the right side, after the op, while dynamic packets don't say this (dynamic packets are ones that include lists or variable sized strings, where you can't define a fixed size).
</p>

<p>
	The last thing of note is the potential "garbage" at the end of packets from the client to the server. Because of how the packet encryption works, the length of packets from the client to the server is always a multiple of 8. Packets that have a fixed size will be able to determine that X byte are "garbage", because they don't belong to the actual data, but are a left-overs from the encryption process.
</p>

<p>
	The garbage bytes can generally be ignored, the only reason we don't truncate them is that we could potentially lose data if the ops are outdated.
</p>
]]></description><guid isPermaLink="false">129</guid><pubDate>Tue, 01 Dec 2015 19:02:24 +0000</pubDate></item><item><title>TOS Exe With command</title><link>https://nocodenolife.org/forum/topic/259-tos-exe-with-command/</link><description><![CDATA[
<p>
	<span lang="en" xml:lang="en"><span>Today</span> <span>was calling</span> <span>the</span> <span>server</span> <span>Melia</span> <span>TOS</span><span>.</span><br /><span>I realized</span> <span>a few things</span><span>,</span> <span>if anyone has</span> <span>thought</span> <span>to open</span> <span>something with</span> <span>TOS.</span></span>
</p>

<p>
	<span lang="en" xml:lang="en"><span>I spent a</span> <span>.bat</span> <span>file</span> <span>with the commands</span> <span>to open the</span> <span>client</span> <span>-SERVICE</span></span>
</p>

<p>
	<img class="ipsImage" src="http://i.imgur.com/YvPGXeG.png" alt="YvPGXeG.png" /></p>

<p>
	 
</p>

<p>
	<span lang="en" xml:lang="en"><span>and</span> <span>it is working perfectly</span></span>,<span lang="en" xml:lang="en"><span> both</span> <span>in the game folder</span><span>,</span> <span>as</span> <span>a shortcut</span></span>
</p>

<p>
	<span lang="en" xml:lang="en"><span>Program Bat to Exe Converter</span></span>
</p>

<p>
	<a href="http://www.f2ko.de/downloads/Bat_To_Exe_Converter.zip" rel="external nofollow">http://www.f2ko.de/downloads/Bat_To_Exe_Converter.zip</a>
</p>

<p>
	 
</p>

<p>
	Code:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">start Client_tos.exe -SERVICE</span></pre>

<p>
	<span lang="en" xml:lang="en"><span>save the</span> <span><strong>.bat extension</strong>, </span></span> <span lang="en" xml:lang="en"><span>then just</span> <span>use the program</span></span>.
</p>

<p>
	 
</p>

<p>
	<span lang="en" xml:lang="en"><span>If</span> <span>not want to use</span> <span>the program</span> <span>I provide</span> <span>my file \/</span></span>
</p>

<p>
	<span lang="en" xml:lang="en"><span>extract</span> <span>and place</span> <span>within the</span> </span> <span lang="en" xml:lang="en"><span>folder</span></span>  <strong><span lang="en" xml:lang="en"><span>Steam</span>\<span>steamapps</span><span>\</span><span>common\</span><span>Tree Of</span> <span>Savior</span><span>\release</span></span></strong>
</p>

<p><a class="ipsAttachLink" href="//aura-project.org/forum/applications/core/interface/file/attachment.php?id=501">Tree of Savior.rar</a></p>]]></description><guid isPermaLink="false">259</guid><pubDate>Mon, 25 Apr 2016 17:04:44 +0000</pubDate></item><item><title>IPF Browser (v1.0.0)</title><link>https://nocodenolife.org/forum/topic/219-ipf-browser-v100/</link><description><![CDATA[
<p>
	IPF Browser is a tool to browse the contents of IPFs and extract files from them. I created it as an alternative to IPF Suite because it doesn't support the encrypted IPF files yet and lacks little "quality of life" features I was missing.
</p>

<p>
	<img alt="ss+(2016-03-28+at+11.02.52).png" class="ipsImage ipsImage_thumbnailed" data-fileid="335" src="https://nocodenolife.org/forum/uploads/monthly_2016_03/56f99f20ad7ee_ss(2016-03-28at11.02.52).png.a3518e7e833f0a9c6a54e2e55f8d497a.png" style="width:597px;height:400px;" /></p>

<p>
	<strong><span style="font-size:18px;"><a href="https://github.com/exectails/IPFBrowser/releases" rel="external nofollow">Download</a></span></strong><br /><a href="https://github.com/exectails/IPFBrowser" rel="external nofollow">Source</a>
</p>

<p>
	<span style="font-size:16px;"><strong>Features</strong></span>
</p>

<ul><li>
		<span style="font-size:14px;"><span style="line-height:25.6px;">Reads any IPF files, be it iCBT1, 2, or current kTOS/iTOS ones.</span></span>
	</li>
	<li>
		<span style="font-size:14px;"><span style="line-height:25.6px;">(Fast) extraction of single files, all files in one IPF, or an entire client's data.</span></span>
	</li>
	<li>
		<span style="font-size:14px;"><span style="line-height:25.6px;">Optional preview for all text, image, and font files.</span></span>
	</li>
</ul><p>
	<span style="font-size:16px;"><strong><span style="line-height:25.6px;">Limits</span></strong></span>
</p>

<ul><li>
		<span style="font-size:14px;"><span style="line-height:25.6px;">No IPF editing.</span></span>
	</li>
	<li>
		<span style="font-size:14px;"><span style="line-height:25.6px;">No 3D preview (yet).</span></span>
	</li>
</ul>]]></description><guid isPermaLink="false">219</guid><pubDate>Mon, 28 Mar 2016 21:25:21 +0000</pubDate></item><item><title>IPF Suite</title><link>https://nocodenolife.org/forum/topic/136-ipf-suite/</link><description><![CDATA[
<p>
	This is currently my favorite tool to extract and view the contents of ToS's IPF files. It works well and previews most file types contained in the IPFs.
</p>

<p>
	<a href="http://www.tosbase.com/downloads/IPF_Suite.zip.html" rel="external nofollow">http://www.tosbase.com/downloads/IPF_Suite.zip.html</a>
</p>

<p>
	Update: I'm now using my own tool to browse and extract IPFs, <a href="https://nocodenolife.org/forum/topic/219-ipf-browser-v100/" rel="">IPF Browser</a>.
</p>
]]></description><guid isPermaLink="false">136</guid><pubDate>Fri, 04 Dec 2015 11:16:17 +0000</pubDate></item></channel></rss>
