Jump to content
GunnerMBT

Eter Tool

Recommended Posts

Hi, I've been working on a more complete Eter management solution, still a work-in-progress.

 

Introduction & description

 

I've always hated the lack of organization when building or editing large quantities of files using the current tools, also they all lack a good UI, as a result I started making my own. It's meant to have a profile-based approach (you create your profile, which corresponds to a client) and all files regarding this and only this profile will be in the same place. This is a community-driven project, so I'll change it according to our needs.

Requirements

- .NET framework 4.5, previous versions won't work for the simple fact that I'm using some of the latest updates (which lack downward compatibility).

 

FAQs

 

Q: Is the project Open-Source?

A: No, not yet. I'll make it open-source once a stable version is released, this will guarantee that everyone works on maintainable code-base (still much work to be done).

 

Q: Why is the main executable file packed?

A: I'm trying to prevent code leakages until I make it open-source. You can easily test it in a VM and monitor its behaviour...

 

Q: What are all those files distributed along with the executable?

A: Since not everyone has the same version of .NET framework, I've included all additional dependencies (you still need .NET framework 4.5 installed).

 

Q:Found a bug. How should I report it?

A: If an exception was raised and not handled (a message will alert you), send me the errorLog.txt, aswell as thoroughdescription of your actions prior to said exception (or bug). If the bug is related to unpacking or packing any file, send me those files, aswell as your application.settings and profile.settings. Irreproducible bugs will be ignored.

Q: Where are unpacked & packed files stored?

A: userData/{ProfileName}/unpack & userData/{ProfileName}/pack

File description

- EterTool.exe => Main executable file, packed.

- System.Windows.Controls.Input.Toolkit.dll, System.Xaml.dll and WPFToolkit.dll => needed dependencies (local copies)

- LzoModule.dll => .NET wrapper of the oberhumer.com LZO implementation.

- msvcr120.dll => Needed dependency of LZoModule.dll, DO NOT replace this file, as some of you might have different versions of it, it might throw a "BadFormat" exception.

- ApplicationUpdater.exe => Very poorly coded (didn't want to waste any time on it hehe) application updater, just so you can easily update to the latest versions (this file isn't packed).

Main features list

- Profile-based approach to improve organization (image)

- Index preview, and item selection (both for unpacking and packing, image)

- Quick unpack and repack functions (image1, image2)

- Size optimizer, it finds duplicates and not compressed files (image)

Planned development

- Implement global quick pack & repack, it will enable users to quickly process files outside of the current profile. (implemented)

- Improve Size Optimizer, adding the capability to automatically repack all needed files instead of just showing informaton.

- Improve "Output log" and "Detailed log" windows. (implemented)

- Improve human-error prevention and exception handling (the most importat one, at the moment)

- Add support for multi-threaded unpacking & packing actions while also setting a user-defined limit, for example:

-- You can add 20 files to the operations list, while only X being processed at a time, to prevent crashes.

Known issues and limitations

- Limitation: if an item inside the epk file is greater than 600mb (or its encryption/decryption size), the file will be ignored, this is a known limitation of the .NET framework for programs targeting x86 architectures (the real cap is somewhere between 1.2-1.6gb, but to prevent crashes I downsized it)

- No support for multi-threaded actions.

- Sometimes when clicking enter it won't update the GridView (FIXED)

- Packing with quick unpack will output a wrong file Path

How to setup your profile

- If needed, I might make a video or post some more images, but it's fairly simple:

1. Open the program, it will show up a message saying it didn't find the CWD.

2. Go to Profile Manager -> Manage

3. Change to your settings (at this stage, please include the CWD with backslashes given that Data Validation is in a very early stage)

3.1 Good example: Image // Bad example: Image2

4. Hit "Save settings" button. (You might need to restart the program after saving)

5. Go to the "Select file from CWD" group and it all should be ready, start typing a file an auto-suggestion will show up (image)

6. In order for the GridView to update, you MUST click enter on the selected file, this is the action trigger.

IMPORTANT NOTE:

In some files, you'll notice a message in the "Output log" window alerting you to some files with different hash than expected, this is due to the fact that most eix files are not 100% accuretly built. You can confirm the integrity of the file by extracting the same file with Tim's unpacker, you'll notice it's the same checksum.

PLEASE READ THIS BEFORE USING THE SIZE OPTIMIZER.

Download: Mega.co.nz VT~

Change-log

1.0.14.1274 - On 21-02-2014

- Fixed Output log unreferenced object.

- Fixed encoding when packing files.

1.0.15.0 - On 22-02-2014

-> Repacking now properly updates the progress UI.

-> Fixed a bug where repacking would not get logged.

-> Improved exception handling and minor changes in the Detailed log view.

-> Other small bugfixes.

Version 1.1.0.0 - On 24-02-2014

-> Fixed several memory leaks

-> Improved exception handling

-> Minor grammar typos fixed

-> Fixed a bug where Filename CRC hash was not being correctly written (this would cause the client to not be able to read the files packed with the tool)

-> Export to XML implemented (compatible with Tim's unpacker)

-> You can now quickly select/deselect items on the quick unpack/repack window, aswell as set its packing type (repack window)Image

Version 1.1.0.58 - On 25-02-2014

-> Fixed a bug which prevented Quick Unpack from creating valid files.

-> Added 2 new options to applicationSettings (self-explanatory):

- BypassUnpackingIfAlreadyUnpacked

- BypassPackingIfAlreadyPacked

-> You can now select which files to overwrite individually (overriding the global settings)

-> Compression level changed to 999 from 1 (it will be slightly slower but the final size will be smaller)

Credits & final notes

Used oberhumer.com for the LZO algorithm.

Thanks to:

- Tim, for helping me out understand how Eter files work, general architectural design input and guidance.

- Marty, for helping me find out some major bugs, aswell as pointing out various errors in my implementations.

- MadTiago, MarcoTuna, Pacificador, Kforce and Alejandro, for being my test slaves :P.

  • Love 21

Share this post


Link to post
Guest

Thanks for making this OpenSource in the future github?

 

I will test it now.

Share this post


Link to post

Really good UI and property :) I hope you improve stability in time and have little issues.

 

 

Respects

Share this post


Link to post

My antivirus has detected as a virus  :blink:

74FC8.png

 

If you will publish the source in the future, why did you pack the exe? :ph34r:

 

Share this post


Link to post

My antivirus has detected as a virus  :blink:

74FC8.png

 

If you will publish the source in the future, why did you pack the exe? :ph34r:

FAQs

Q: Why is the main executable file packed?

A: I'm trying to prevent code leakages until I make it open-source. You can easily test it in a VM and monitor its behaviour...

Share this post


Link to post

My antivirus has detected as a virus  :blink:

74FC8.png

 

If you will publish the source in the future, why did you pack the exe? :ph34r:

 

Maybe since he doesn't want to publish the source yet he also wants to protect the exe until he publishes the source.

Share this post


Link to post
System.NullReferenceException: Nesne başvurusu bir nesnenin örneğine ayarlanmadı.
   konum: EterTool.ViewModels.MainViewModel.<UnpackFilesAction>b__20()
   konum: System.Threading.Tasks.Task.InnerInvoke()
   konum: System.Threading.Tasks.Task.Execute()
--- Özel durumun oluşturulduğu önceki konumdan başlayan yığın izlemesinin sonu ---
   konum: System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   konum: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   konum: System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   konum: EterTool.ViewModels.MainViewModel.<UnpackFilesAction>d__23.MoveNext()
--- Özel durumun oluşturulduğu önceki konumdan başlayan yığın izlemesinin sonu ---
   konum: System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)
   konum: System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   konum: MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
 
 
what i should do :)

Share this post


Link to post

My antivirus has detected as a virus  :blink:

74FC8.png

 

If you will publish the source in the future, why did you pack the exe? :ph34r:

 VT scan addded.

 

System.NullReferenceException: Nesne başvurusu bir nesnenin örneğine ayarlanmadı.

   konum: EterTool.ViewModels.MainViewModel.<UnpackFilesAction>b__20()

   konum: System.Threading.Tasks.Task.InnerInvoke()

   konum: System.Threading.Tasks.Task.Execute()

--- Özel durumun oluşturulduğu önceki konumdan başlayan yığın izlemesinin sonu ---

   konum: System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   konum: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   konum: System.Runtime.CompilerServices.TaskAwaiter.GetResult()

   konum: EterTool.ViewModels.MainViewModel.<UnpackFilesAction>d__23.MoveNext()

--- Özel durumun oluşturulduğu önceki konumdan başlayan yığın izlemesinin sonu ---

   konum: System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)

   konum: System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

   konum: MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

 

 

what i should do :)

Please read the FAQ. Send me the files, I need to be able to reproduce the issue...

Share this post


Link to post

Which file were you trying to unpack?

oh my bad

 

i was wrong put files to folder so thanks for replies :)

but then when will support type 3 and 4 so just important is thats already

Share this post


Link to post

Type3 and 4 it's just the matter of server. You shoul use python unpacker instead.

Share this post


Link to post

oh my bad

 

i was wrong put files to folder so thanks for replies :)

but then when will support type 3 and 4 so just important is thats already

There are some far more important features to implement, it will eventually support them though.

Share this post


Link to post

There some far more important features to implement, it will eventually support them though.

vuv sounds pleasing to the ear so we will see thanks :)

Share this post


Link to post

Change-log:

Version 1.0.15.0 - On 22-02-2014

-> Repacking now properly updates the progress UI.

-> Fixed a bug where repacking would not get logged.

-> Improved exception handling and minor changes in the Detailed log view.

-> Other small bugfixes.

Regarding the size optimizer, some of you reported that it finds items which are not real duplicates, why does this happen?

Simply because the EIX files are not 100% accurate, the exptected CRC hash is not correct, basically.

Notice how Eter Tool tells you the exptected hash is different (image). But if you compare the output file with Tim's unpacker, it's the same, but different than the exptected by the EIX file (image).

Conclusion: if you want a 100% accurate Size optimizer analysis you must unpack ALL thefiles in your client and repack them again (using my tool or any other which gets the correct CRC hash).

Share this post


Link to post

When I try to extract root from official metin2 client I recive makepackscript_onlyrootnopython.txt and only non python files.

From now, EtherNexus and other extractors is innutile because simply NOT WORKING

Share this post


Link to post

Official's doesn't have python files in their root anymore.. They are in binary file since the last update (Belt System, Blazing Purgatory. etc).

Share this post


Link to post

Change-log:

Version 1.0.15.0 - On 22-02-2014

-> Repacking now properly updates the progress UI.

-> Fixed a bug where repacking would not get logged.

-> Improved exception handling and minor changes in the Detailed log view.

-> Other small bugfixes.

Regarding the size optimizer, some of you reported that it finds items which are not real duplicates, why does this happen?

Simply because the EIX files are not 100% accurate, the exptected CRC hash is not correct, basically.

Notice how Eter Tool tells you the exptected hash is different (image). But if you compare the output file with Tim's unpacker, it's the same, but different than the exptected by the EIX file (image).

Conclusion: if you want a 100% accurate Size optimizer analysis you must unpack ALL thefiles in your client and repack them again (using my tool or any other which gets the correct CRC hash).

important things do not work

 

so not working "export the xml file" 

Share this post


Link to post

important things do not work

 

so not working "export the xml file"

I'm aware of it, I should start working on it tomorrow. Also, I found a huge memory leak which is already corrected. The next version will have both of these implemented and fixed.

  • Love 1

Share this post


Link to post

I'm aware of it, I should start working on it tomorrow. Also, I found a huge memory leak which is already corrected. The next version will have both of these implemented and fixed.

ah awesome so thanks :) we waiting with be impatient

Share this post


Link to post

I'm aware of it, I should start working on it tomorrow. Also, I found a huge memory leak which is already corrected. The next version will have both of these implemented and fixed.

 

what is your status to "export the xml file" :)

Share this post


Link to post

what is your status to "export the xml file" :)

I can't give you an ETA, since there are more pressing matters (e.g: the leaked binaries source seem to be unable to decompress data compressed with compression level 1, thus files wouldn't work). A new version should be released in the next few days though...

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.