Download & install the AIR reader for Linux (discontinued as of today, but you can install an old version). Download & install the Zinio reader. Swf to jpg converter could convert flash to a series of pictures of jpeg according to each frames of Convert zinio magazine to epub free download for windows. Zinio Reader Reading and Management. Does anyone know how to convert that thing into html or txt – pdf would suit best, as the layout of the.
|Published (Last):||13 November 2017|
|PDF File Size:||12.32 Mb|
|ePub File Size:||19.69 Mb|
|Price:||Free* [*Free Regsitration Required]|
Someone sent me an email a few weeks ago asking me if my Future plc downloader could also download Zinio magazines. I had no idea what Zinio is, so I visited their website to learn more about their platform. Such a huge number of magazines instantly made them into a potential target for a DRM removal tool.
linux – How to convert downloaded Zinio publications to an open format? – Super User
Initially, I was not interested in breaking it, but I kept the idea in the back of my mind anyway. One day I had a few hours to spare and decided to give it a try.
Zinio does not provide publication files in PDF format. Your digital edition can be downloaded and saved in a format optimized for a rich reading experience provided by the Zinio Reader software. It iznio easy to verify their claims. Zinioo created an account, purchased one magazine and downloaded their Windows desktop app from Microsoft Store. Using EverythingI quickly found the folder containing the issue I just downloaded:. I tried to open one of the files, but I got the result I expected: I usually start with reversing the network API, but this time I changed the process and started with decompiling the app first, because trying to decrypt the files is way more fun.
Zinio app targets both Windows 8.
NET Native and can be trivially decompiled. This time I used dnSpywhich is my new favorite tool for decompiling. The search returned only a few results, and one of them was this function in the ZinioReaderWin8. This looked like it would be a very quick game over for Zinio. This function tells us that the PDF password is encrypted with AES-CBC using the bit key derived from parameters called deviceId and uuid initialization vector is passed via cipher parameter.
But where are all these parameters coming sqf Here are the most important lines of the ParsePackingList function:. But what about the remaining parameters, deviceId and uuid?
It turns out they are static values initialized in ZinioReaderWin8. That was all I needed from the decompiled application.
Convert zinio swf pdf
This part of the process was straightforward. Zinio API is super simple, with only three interesting requests: Each request and response are self-contained XML documents, without custom HTTP status codes and headers; that made my job even simpler. The client calls the libraryService to download the list of all purchased issues, and then issueData is called for each of them in order to retrieve all the data necessary to download it.
Here is how issueData request looks in practice:. There are a lot of parameters here, and all of them are required. The server responds to this zinioo with the following response:. That worried me a little, because if the password was same for all the magazines, my program would allow users to download every available magazine for free, which was not my goal.
Server was also generating different IV each time, but that should have affected only the ciphertext—password should have been the same each time.
That was not the case when I ran my code: That meant my decryption key was wrong. Finally, after dozens of unsuccessful attempts, an idea came to my mind: Ho the problem was that I decompiled the.
Few more hours of coding and my application could download, decrypt and merge individual files into a single PDF. After opening the generated PDF file, I noticed an ugly blue square at the upper-left corner of each page:. Each page apparently had an useless annotation containing the page number. You might remember that I had similar problem with annotations beforebut this time they were much more obtrusive; I had to find a way to remove them.
I was hoping that the library could also remove annotations. Unfortunately, their API documentation is next to useless: I started looking for any type or function that looked like it could have anything to do with annotations. I discovered an interesting type called PdfObjectDictionary. PDF file itself is a collection of objects, so there might be a way to find annotations by name and set their values to null or something like that?
Removing Zinio DRM
What was going on? How to get the PdfObject out of the PdfPage? Obviously, by trying each available method until the program compiles!
I started looking through autocompletion suggestions and found a field called Annots. My final code looked like this:. Annotations were gone and my application was complete. You can download it here. Using EverythingI quickly found the folder containing the issue I just downloaded: Decompiling Zinio app I usually start with reversing the network API, but this time I changed the process and started with decompiling the app first, because trying to decrypt the files is way more fun.
Decrypt keydataiv ; return CryptographicBuffer. Descendants “trackingCode” ; if source. DecryptPdfPassword value2value3instance. GetPage pageNum if err! AddPage page if err!