Zodiac Discussion Forum

Project Zenith 2.1….
 
Notifications
Clear all

Project Zenith 2.1.0

16 Posts
6 Users
0 Reactions
4,774 Views
(@beldenge)
Posts: 48
Trusted Member
Topic starter
 

I’m pleased to announce the release of Zenith 2.1.0! It’s not my intention to spam these release posts, but I want you guys to be the first to know since you’ve helped me get here.
https://github.com/beldenge/Zenith/releases/tag/2.1.0

Along with a bunch of fixes and optimizations, there are three big features included with this release.

1. Zenith can now be run as a publicly hosted app! http://projectzenith.net This hopefully helps with adoption as Zenith can now be used without downloading anything. It took much more of a major overhaul of various components to achieve this, but the whole framework and architecture is much more flexible and easy to build onto now as a consequence. No login is required, as everything you do is saved to the browser’s local storage and can be exported/imported as a JSON config file. It remains supported as a local app, which is still the recommended way to run it in fact, as I am only planning on paying for a low-end EC2 instance unless there’s some way for me to offset those costs (which I doubt). So if you want it to actually run fast, then I suggest downloading it. :) And thanks to doranchak for encouraging me to add the support for hosting it publicly.

Link directly to the EC2 instance in case DNS propagation hasn’t completed: http://ec2-54-211-231-48.compute-1.amazonaws.com

2. Word Segmentation
Zenith will now automatically attempt to segment the words from the solution plaintext. A big thank you to beijinghouse for pointing me to a very good resource on how to implement this and for encouraging me to include it into the app. Eventually I hope to use this capability with a word-level ngram fitness function.

3. Fitness Function Selection
Speaking of fitness functions, selection of those was always supported on the command-line version, but that ability has now been made available on the web front-end as well. You can now swap out different fitness function implementations (ngrams plus IoC, ngrams plus entropy, ngrams plus chi-squared, etc.) from the Settings page.

My focus now is on more experimental ideas and improving the solving power. Please let me know what you guys think or if you have any questions or suggestions.

http://projectzenith.net
https://github.com/beldenge/zenith

 
Posted : May 30, 2020 8:54 am
Jarlve
(@jarlve)
Posts: 2547
Famed Member
 

Looks and feels fantastic!

In general much more user friendly than AZdecrypt. Keep up your great work beldenge!

Some feedback:

– Not possible to edit cipher in Ciphertext window?
– Bigram repeats and cycle score do not update with Transformers.
– Multiplicity is a number larger than 1?
– Debatable, I’d say that "Period" is the unwrap and "Unwrap Period" is the wrap. FYI, "Unwrap Period" is also exactly the same as Scytale.

AZdecrypt

 
Posted : May 30, 2020 11:45 am
doranchak
(@doranchak)
Posts: 2614
Member Admin
 

WOW! Really great work! Really slick and easy to use. Thanks for releasing this!

http://zodiackillerciphers.com

 
Posted : May 30, 2020 1:53 pm
doranchak
(@doranchak)
Posts: 2614
Member Admin
 

Multiplicity is a number larger than 1?

Looks like he converted it to a percentage by multiplying by 100.

http://zodiackillerciphers.com

 
Posted : May 30, 2020 1:54 pm
(@beldenge)
Posts: 48
Trusted Member
Topic starter
 

Thanks guys!

In general much more user friendly than AZdecrypt. Keep up your great work beldenge!

That’s a huge compliment, but I must say AZdecrypt is a much more powerful solver than Zenith. There are lots of ciphers that AZdecrypt can solve which Zenith cannot. It will improve over time but probably will never reach AZdecrypt’s level, so you keep up your great work also!

– Not possible to edit cipher in Ciphertext window?

Currently it is not possible, as I wanted to keep things immutable. I wanted that functionality to stay on the Cipher Management page, but currently the set of default ciphers are set to "read-only" so it’s not even possible there. If you want you can copy the ciphertext and create a new cipher which you could then edit. I plan to add a feature to duplicate ciphers like that with one click. But your question does bring up a good point which I didn’t consider — do you anticipate a need for easily updating ciphertext directly in the dashboard?

– Bigram repeats and cycle score do not update with Transformers.

Thanks for pointing out the obvious issue with the stats not updating with the transformers. It’s funny how as a developer you can get so lost in the details that you miss obvious things like that. I will definitely fix that in the next patch.

– Multiplicity is a number larger than 1?

doranchak is correct that I multiply the multiplicity by 100. I don’t remember my thought process when I originally wrote that part. But if it makes sense to not do the percentage conversion I can very easily change that.

– Debatable, I’d say that "Period" is the unwrap and "Unwrap Period" is the wrap. FYI, "Unwrap Period" is also exactly the same as Scytale.

To be honest, I don’t even really like my naming convention of wrap/unwrap. I just couldn’t think of anything better. I also considered "undo" or "inverse" but didn’t want to spend a lot of time thinking about naming. I am 100% open to suggestions.

http://projectzenith.net
https://github.com/beldenge/zenith

 
Posted : May 30, 2020 8:58 pm
(@mr-lowe)
Posts: 1197
Noble Member
 

i am much slower than you guys but i am getting the hang of it, it is very user friendly.
cheers

 
Posted : May 31, 2020 12:24 am
Jarlve
(@jarlve)
Posts: 2547
Famed Member
 

do you anticipate a need for easily updating ciphertext directly in the dashboard?

It’s always handy and also allows the user to copy-paste ciphers from forums etc.

To be honest, I don’t even really like my naming convention of wrap/unwrap.

I like it. It’s simple, clear and short.

AZdecrypt

 
Posted : May 31, 2020 10:03 am
(@largo)
Posts: 454
Honorable Member
 

The tool is really great, thanks for sharing! Clearly structured, tidy user interface and even a tour is available. This is extremely user-friendly.

But your question does bring up a good point which I didn’t consider — do you anticipate a need for easily updating ciphertext directly in the dashboard?

It would actually be very convenient if you could copy a ciphertext directly into the window.

Another suggestion: When creating a new cipher, the item "Dimensions" could be omitted, as well as the requirement that the symbols must be separated by spaces. The dimensions could be recognized automatically by the line breaks and the spaces could be inserted automatically. What do you think?

Translated with www.DeepL.com/Translator (free version)

 
Posted : June 1, 2020 6:23 pm
(@beldenge)
Posts: 48
Trusted Member
Topic starter
 

Thanks for those suggestions Largo. At least one other person has shared the same idea of inferring the dimensions, so I’ll give it some more thought. The hard part is how to handle ciphers that don’t have perfect rectangular dimensions. For example another cipher I am interested in is the James Hampton (hamptonese) text, for which all the rows have different lengths. The way I get around that is by changing it to a cipher with a single really long row. I suppose I still could implement inferring dimensions and just throw a validation error if the row lengths don’t match. I’ll try that out and see how it feels.

As far as spaces, that’s even trickier. I want to be able to support ciphers which have symbols of more than one character (such as Hamptonese, the Beale Ciphers, etc). In those cases it’s impossible to infer where the spaces should go. So I do see how it’s a bit tedious when inputting the cipher, but requiring a delimiter allows support for cipher symbols of any length. I’m open to suggestions if anyone has other thoughts on how to support that which will also make cipher input a little easier.

http://projectzenith.net
https://github.com/beldenge/zenith

 
Posted : June 2, 2020 1:34 am
(@beldenge)
Posts: 48
Trusted Member
Topic starter
 

Just a heads up that Zenith 2.1.1 is now live!

http://projectzenith.net
https://github.com/beldenge/Zenith/releases/tag/2.1.1

I tried to address a couple of the things people have commented about regarding the add/edit cipher experience. It will now infer the rows/columns automatically as several people have asked about. And I also put in a handy button to automatically inject the space delimiter since that is still a requirement. Hopefully that eases the burden of copying in ciphers that don’t have any spaces separating the symbols. It’s much more tricky to do automatically hence why I decided to provide a button for it.

I also noticed that the UI wasn’t very mobile friendly, which I didn’t care about when it was just a desktop app, but now that it’s hosted I went ahead and fixed a bunch of things to help with the mobile experience (although I wouldn’t particularly recommend using it on mobile anyway).

I also threw an additional statistics component on the dashboard, which you can expand to show unigram, bigram, and trigram counts. I hope that feature proves useful.

Please let me know if anyone has further questions or suggestions!

http://projectzenith.net
https://github.com/beldenge/zenith

 
Posted : June 6, 2020 8:19 am
Jarlve
(@jarlve)
Posts: 2547
Famed Member
 

Looks good beldenge.

Perhaps you can allow the last row to be of a different length, as for example with ciphers that have a prime number length.

How does the "Transposition" transformer work?

What is the story behind the cipher "jameshampton1"? Never seen it before.

AZdecrypt

 
Posted : June 6, 2020 11:20 am
(@largo)
Posts: 454
Honorable Member
 

The new features are great! I just tried it and the usability is much better now.
What I forgot to mention last time: The word segmentation is very useful. Maybe I will include it in my solver, if I find the time. It makes it much easier to see if you have found a possible solution.

Great work!

Translated with http://www.DeepL.com/Translator (free version)

 
Posted : June 6, 2020 2:27 pm
(@beldenge)
Posts: 48
Trusted Member
Topic starter
 

Perhaps you can allow the last row to be of a different length, as for example with ciphers that have a prime number length.

Do you have an example by chance? I was thinking if the rows do not all match, then it should essentially just be written as a single line, but maybe my assumption is not correct.

How does the "Transposition" transformer work?

That performs a keyed columnar transposition. I should really fix the name to be more specific. The key can be any string of alpha characters, and it will convert the characters to integer indices.

What is the story behind the cipher "jameshampton1"? Never seen it before.

That’s an interesting story and hence why I became interested in the cipher. Here’s his wikipedia entry:
https://en.wikipedia.org/wiki/James_Hampton_(artist)
His enciphered writings are over 100 pages long. Some previous work was done which you can find here, which includes links to the scanned images and their attempt at transcribing them to a machine-readable format:
http://www.cs.sjsu.edu/faculty/stamp/Hampton/hampton.html
I know this is a zodiac centered forum so I didn’t want to get too off topic but between the z340 and hamptonese those are the two ciphers I am spending spare time on.

The new features are great! I just tried it and the usability is much better now.
What I forgot to mention last time: The word segmentation is very useful. Maybe I will include it in my solver, if I find the time. It makes it much easier to see if you have found a possible solution.

This is the resource that Beijinghouse pointed me to. It’s implemented in Python, but I found it pretty straightforward to convert it to Java. I’m sure you could adapt it similarly, and I would be happy to help if you run into any trouble.
http://practicalcryptography.com/cryptanalysis/text-characterisation/word-statistics-fitness-measure/

http://projectzenith.net
https://github.com/beldenge/zenith

 
Posted : June 6, 2020 8:13 pm
glurk
(@glurk)
Posts: 756
Prominent Member
 

beldenge-

If you want to look at it, here’s how ZKD handles calculating column widths. I don’t even remember exactly how this works, LOL:

int Message::CalcBestWidth(int msg_len) {
	int s, r, d, l;
	
	int in=0, jn=0;			// lowest difference dimensions for non-primes
	int ip=0, jp=0, rp=0;	// lowest difference dimensions and remainder for primes

	//special cases
	if(msg_len<25) return msg_len; //short
	if((!(msg_len%17)) && msg_len<210) return 17; //zodiac partials
	if(msg_len==32) return 17; //button cipher
	if(msg_len==88) return 29; //dorabella

	s = l = (int)sqrt((double)msg_len);

	for(int i=1;i<2*s;i++) {
		for(int j=2*s;j>0;j--) {
			r = abs(msg_len - i*j);
			d = abs(i - j);
			// non-primes: minimize diffs. between factors
			if((i*j == msg_len)&&(d < l)) { l = d; in = i; jn = j; }	
			// primes: minimize diffs. keeping remainder < sqrt(msg_len) 
			if((msg_len == i*j + r)&&(r < s)&&(d < l)) { l = d; ip = i; jp = j; rp = r; }
		}
	}
	if(in*jn == msg_len) return in; 
	else return ip;
}

——————————–
I don’t believe in monsters.

 
Posted : June 7, 2020 4:33 am
doranchak
(@doranchak)
Posts: 2614
Member Admin
 

Hi beldenge – I’ve been taking another look at Project Zenith because I am working on an episode of my YouTube series, this time focusing on codebreaking software, and Project Zenith would be great to include (unless you object).

I just went through the build process to run it locally on my Mac laptop and it worked very well! I am impressed by how well put together this application is. And the user interface is so slick (written in Angular, right?). Very nice job.

The only small problem I encountered was run-ui-macos-linux.sh couldn’t find the zenith-ui-2.1.4-SNAPSHOT.jar file, so I had to update the script to point to the full path: zenith-ui/target/zenith-ui-2.1.4-SNAPSHOT.jar

The transformation pipeline is really cool. I love how you can just drag and drop transformation steps into the pipeline and immediately see the results.

Anyway, the whole thing is very professionally done! Keep up the great work!

http://zodiackillerciphers.com

 
Posted : September 30, 2020 2:45 pm
Page 1 / 2
Share: