Users browsing this thread: 1 Guest(s)
Love Nikki Encrypted Image Files
#1
Hi all! For the past year and a half, I've been ripping sprites from the 2D dress-up game Love Nikki, using Nox and NinjaRipper. However, as the game has tens of thousands of image files, that method is very tedious.

Unfortunately, it is currently my only method because although I can access the files marked as PNG and JPGs, and I'm able to file swap them with real images and have them load in game, they lack headers and appear to be encrypted or obfuscated in some way.

From what I can see opening them in a hex editor, they also don't seem to have the structure of a proper PNG or JPG file either. Unfortunately, I have very little understanding of decryption, so I'm at a roadblock.

So now I'm going to ask here, if anyone is capable of helping me, it would be so very much appreciated. 

I've attached some examples of the encrypted image files; one is what should be a 128px by 151px PNG file of a face, the other should be a 1625px by 1788px JPG of a background. 
.zip   Image.zip (Size: 246.6 KB / Downloads: 457)

Thank you!
Reply
Thanked by: FormerUser1
#2
Thumbs Up 
(06-24-2019, 01:11 AM)CorruptTurret Wrote: They're all encrypted with Blowfish using an (effectively) constant key / mode / initial state.

Here's a java program to recursively extract encrypted files in whatever input folder (JRE 1.8 or above needed)
http://dnrv2.cyriaca.net/projects/hate3/jar/Hate3.jar
You run it in a terminal with "java -jar Hate3.jar <input folder> <output folder> <key>"
Source (just cuz)
https://github.com/veronicakulikova/play...Hate3.java

You'll need to use this key
fd1c1b2f34a0d1d246be3ba9bc5af022e83375f315a0216085d3013a

Aaahhhhhhhh thank you so much!!! It worked T^T You're a lifesaver!!

(For anyone else reading this who's not super well versed in Java like me, if you encounter an "illegal key size or default parameters", you gotta check out this guide.)

I'm gonna get right to compiling the sprite sheets for this then! Thank you again!!!
Reply
Thanked by: FormerUser1, thebutthutt
#3
(06-24-2019, 02:27 PM)lapistier Wrote:
(06-24-2019, 01:11 AM)CorruptTurret Wrote: They're all encrypted with Blowfish using an (effectively) constant key / mode / initial state.

Here's a java program to recursively extract encrypted files in whatever input folder (JRE 1.8 or above needed)
http://dnrv2.cyriaca.net/projects/hate3/jar/Hate3.jar
You run it in a terminal with "java -jar Hate3.jar <input folder> <output folder> <key>"
Source (just cuz)
https://github.com/veronicakulikova/play...Hate3.java

You'll need to use this key
fd1c1b2f34a0d1d246be3ba9bc5af022e83375f315a0216085d3013a

Aaahhhhhhhh thank you so much!!! It worked T^T You're a lifesaver!!

(For anyone else reading this who's not super well versed in Java like me, if you encounter an "illegal key size or default parameters", you gotta check out this guide.)

I'm gonna get right to compiling the sprite sheets for this then! Thank you again!!!

This is incredible! I know this is old but it WORKS and ive been wanting this forever
Big Grin
Reply
Thanked by:
#4
(02-04-2021, 12:37 PM)thebutthutt Wrote:
(06-24-2019, 02:27 PM)lapistier Wrote:
(06-24-2019, 01:11 AM)CorruptTurret Wrote: They're all encrypted with Blowfish using an (effectively) constant key / mode / initial state.

Here's a java program to recursively extract encrypted files in whatever input folder (JRE 1.8 or above needed)
http://dnrv2.cyriaca.net/projects/hate3/jar/Hate3.jar
You run it in a terminal with "java -jar Hate3.jar <input folder> <output folder> <key>"
Source (just cuz)
https://github.com/veronicakulikova/play...Hate3.java

You'll need to use this key
fd1c1b2f34a0d1d246be3ba9bc5af022e83375f315a0216085d3013a

Aaahhhhhhhh thank you so much!!! It worked T^T You're a lifesaver!!

(For anyone else reading this who's not super well versed in Java like me, if you encounter an "illegal key size or default parameters", you gotta check out this guide.)

I'm gonna get right to compiling the sprite sheets for this then! Thank you again!!!

This is incredible! I know this is old but it WORKS and ive been wanting this forever
Big Grin

Hi, sorry, how did you got this to work? The first link is broken Sad I need the hate3.jar to work.
Reply
Thanked by:
#5
(06-24-2019, 02:27 PM)lapistier Wrote:
(06-24-2019, 01:11 AM)CorruptTurret Wrote: They're all encrypted with Blowfish using an (effectively) constant key / mode / initial state.

Here's a java program to recursively extract encrypted files in whatever input folder (JRE 1.8 or above needed)
http://dnrv2.cyriaca.net/projects/hate3/jar/Hate3.jar
You run it in a terminal with "java -jar Hate3.jar <input folder> <output folder> <key>"
Source (just cuz)
https://github.com/veronicakulikova/play...Hate3.java

You'll need to use this key
fd1c1b2f34a0d1d246be3ba9bc5af022e83375f315a0216085d3013a

Aaahhhhhhhh thank you so much!!! It worked T^T You're a lifesaver!!

(For anyone else reading this who's not super well versed in Java like me, if you encounter an "illegal key size or default parameters", you gotta check out this guide.)

I'm gonna get right to compiling the sprite sheets for this then! Thank you again!!!
Hi! Do you still have the file Hate3.Jav? I really want to run this decoder but don't have the jav file: ((
Reply
Thanked by:
#6
Hi! I'm so sorry I haven't checked this account in ages, if you're still interested you can find the program here! https://nettokun.github.io/nikdump/
Reply
Thanked by:
#7
CorruptTurret's JAR file can be downloaded here:

https://www.mediafire.com/file/ek7pqstm3...3.jar/file

Its source code is here:

https://pastebin.com/xTQRQcrQ

Also, user aluigi on ZenHax provided this script for use with QuickBMS:

Code:
goto -8
savepos SIZE
getdstring DUMMY 4  # "droi"
get NUM byte
getdstring EXT 3

encryption bf_cbc "fd1c1b2f34a0d1d246be3ba9bc5af022e83375f315a0216085d3013a"
xmath XSIZE "SIZE - NUM"

get NAME filename
log NAME 0 XSIZE 0 SIZE
Reply
Thanked by:


Forum Jump: