- Joined
- Oct 26, 2012
- Messages
- 2,357
- Reaction score
- 1,086
I hope y'all really understands how the original Habbo camera works. So well, let's go on over this, and let uncle Claudio explain how the camera system works.
Basically in the moment you take the "Selfie" the Habbo Client sends a packet containing a jSON. This jSON basically describes all the assets that together create the final image. The jSON will contain information of each sprite, including position (X, Y, Z), colours, wallpapers, Habbo's, and etc.
Working with the jSON generation, it's more secure, since it totally makes scripting impossible, in the meaning of defacing and adding unintentional or not related content. Of course, you can change the pieces of the jSON to make a custom image, but that's it. And that's not an exploit, you're just sending different arguments toe the script.
The script works in the following way:
1. The jSON contains the Room Id, Timestamp and User Id
2. The jSON also contains information of all the sprites and their positions and variations.
3. The image is generated by combining all those pieces.
4. An image is saved by using the combination of the Timestamp and Room Id.
5. The Script returns to the Server the final file name.
Why this method is harder to make it succeed? Like everything, you had to reverse engineering Habbo's Camera Server, by making different combinations of the jSON.
Also you would have to extract all the assets from the Habbo.swf and the hof_furni folder. Also you had to extract them in a very specific file naming.
So, basically that's a hell of a work. It's literally more easier modding the Habbo.swf to send in the packet a PNG/JPEG stream containing the final result. And the reason is obvious, security. By allowing to the Emulator/Server to receive any kind of PNG/JPEG chunk/stream in the Packet, you're able to literally send any kind of image. It's basically impossible to do filtering or validation on these scenarios. Of course, I'm not giving the possibility that you would add some TensorFlow libraries and add some MachineLearning and Image pattern recognition on your Emulator, because, well. That's using Mjolnir (Thor's Hammer) on a little ant.
So that's why Habbo created this way. The jSON one. As far I remember I was the only one that actually created a successful implementation of it. But if I recall correctly, Wesley also created his own Habbo Camera Server in Java, for Arcturus. He never shared. But his implementation was literally amazing. Since he could use the advantages of Java Image manipulation libraries.
On my side, I was doing it with PHPs builtin image manipulation libraries, that suck. Since I wanted to make an easy library that anyone could use. If I added Imagick for example as a requisite, almost no one would have used that script. Since it requires custom installation and PHP library installation.
Sorry for the big off-topic. Here's an invisible potato.
About this release. Great work for the team. I hope the project goes on indefinitely and brings back the nostalgia of collaboration and open source.
TL;DR: PNGCamera it's not a good thing. But still a lot more easier.
Thanks for the heads-up. I really thought the camera wasn't a big deal to make but I can understand why PNG camera stuff is made. I still am against using work-arounds out of laziness (if I can call it that) of reverse engineering. Thus, I really hope somebody would someday take time to reverse engineer it and create a safe...-r camera system.
Of course, I still have hopes for this project. As long as the rest is implemented the right way I think we can't complain as community.