A tachiyomi extensions repo
Go to file
zormy111 a3543bf2b2
update of the japscan extension - the complete reverse of the JS (#17181)
* Update Japscan.kt

I completely changed the way to find the keys allowing the decryption of the base64 which contains the information of the images to be recovered. Before there was a recovery by regex, but this was not reliable because the location of these strings changes places and the order is important because it allows to reconstitute the two decryption keys. To succeed in recovering them correctly and in the right order, I debugged the javascript, which allowed me to understand how obfuscation works.

 I understood that the base64 encryption file, the zjs, was not the same file when we had a mobile useragent and a PC useragent, it is however the same key, just that they are placed at different other place
at the end of the file we have the JS which assembles the keys directly as parameters of a function:

a0_0x39cacb('0x13d') + a0_0x39cacb('0x130') + a0_0x39cacb('0x118') + '6N', a0_0x39cacb('0x145') + a0_0x39cacb('0x116') + a0_0x39cacb('0x10f') + 'oe'


we have another function here:

return a0_0x46c1 = function(_0x46c1ab, _0x5a3fac) {
        _0x46c1ab = _0x46c1ab - 0x105;
        let _0x5c76b5 = _0xd80153[_0x46c1ab];
        return _0x5c76b5;
    }


which call string array which contains the key chunks

0 : "laretiLesrap"
1 : "gnp.600/sgmi/"
2 : "atad"
3 : "daol"
4 : "8ceABpX"
..


_0x46c1ab = _0x46c1ab - 0x105;


this operation allows to know the shift in the table, for example
By subtracting 0x105 from '0x13d', we get:

317 - 261 = 56

at location 56, so at index 55 of the array we have: "ohcVEMDTYO7FpBA20zRg"

so here: a0_0x39cacb('0x13d') + a0_0x39cacb('0x130') + a0_0x39cacb('0x118') + '6N'
we replace a0_0x39cacb('0x13d')

by this chain

"ohcVEMDTYO7FpBA20zRg" + a0_0x39cacb('0x130') + a0_0x39cacb('0x118') + '6N'

and that gives us the beginning of the key
and then reverse it
and that gives us the right key

* Update build.gradle

Update build version

* Update Japscan.kt - Completely reverse JavaScript

My modification was missing part of the javascript code to reverse, this modification brings greater stability.
In the JS is decrypts the data, there is a table of character string, this table is the most important element of the decryption because it is used in almost all the functions.

What the algorithm does in a nutshell:

- he shuffles the board until he arrives at a precise position, he pushes all the elements backwards until he finds the right combination. The correct combination is determined by the sum of the digits in the character strings with a more or less complex calculation.

- It calls the table in a "hidden" way with a function that takes a hexadecimal as a parameter (which corresponds to the index in the table)

- once all the keys have been retrieved from the character string table, it assembles them, then reverses them to give the complete key


How I proceeded:

- For the correct position in the table I perform almost the same calculation as the JS but I simplify, this to a tiny margin of error. In the calculation in the JS it parses the INTs in the chain and makes calculations with it, to simplify my task I only check if ALL the elements used contain INTs, I did several debug tests and they are obliged to contain them when the position is good. So starting from this principle I would almost certainly fall on the right position.

- Once my array is correctly sorted, I can with a simple calculation managed to recover the requested element with the hexadecimal

- I reverse the keys and I test the two positions of the keys to decipher the base64

* Update Japscan.kt

Added the possibility to have the parseInt in negative

* Update Japscan.kt

Modification needed to take into account the wider possibility of script changes

* Update Japscan.kt - Add comments

Ajout des commentaires
2023-07-21 18:57:53 -04:00
.github Remove Dead Sources from Removed Sources List (#17201) 2023-07-21 17:44:10 -04:00
.run Readallcomics (#16938) 2023-06-30 10:30:44 -04:00
buildSrc Target Android 14 (#17144) 2023-07-16 16:21:07 -04:00
core Update Gradle and AGP (#12075) 2022-06-05 10:47:25 -04:00
gradle Bump extensions-lib for Preference#setVisible (#17066) 2023-07-10 10:51:55 -04:00
lib Random UA: fix NullPointerException (#17131) 2023-07-16 10:25:49 -04:00
multisrc Added support for Black Clover Manga Online (#16823) (#17171) 2023-07-21 17:43:17 -04:00
src update of the japscan extension - the complete reverse of the JS (#17181) 2023-07-21 18:57:53 -04:00
template Add extension fields for hasReadme and hasChangelog (#10469) 2022-01-22 09:48:52 -05:00
.editorconfig Update linter (#15317) 2023-02-11 14:21:03 -05:00
.gitignore Fix everia.club (#11458) 2022-04-14 04:43:09 -04:00
CODE_OF_CONDUCT.md <skip ci> Update to Contributor Covenant 2.1 (#8512) 2021-08-10 14:04:46 -04:00
CONTRIBUTING.md Revert `lib-i18n` addition (#16990) 2023-07-02 18:42:03 -03:00
LICENSE Add license, closes #17 2017-02-23 22:33:07 +01:00
README.md Link CI status badge to workflow list 2021-06-20 12:06:15 -04:00
REMOVED_SOURCES.md Remove Dead Sources from Removed Sources List (#17201) 2023-07-21 17:44:10 -04:00
build.gradle.kts Re: Use Gradle version catalog to simplify dependencies (#10953) 2022-02-28 07:25:23 -05:00
common.gradle Upgrade OkHttp (#15320) 2023-02-11 17:30:31 -05:00
gradle.properties Remove CI-specific Gradle config 2022-06-10 13:32:18 -04:00
gradlew Update to Gradle 7.2 (#10952) 2022-02-27 10:24:48 -05:00
gradlew.bat Update to Gradle 6.8.2 2021-02-06 18:04:24 -05:00
ktlintCodeStyle.xml Add linting configs 2020-04-25 10:29:23 -04:00
settings.gradle.kts Random User-Agent Refactor (#17059) 2023-07-15 19:52:35 -03:00

README.md

Build Support Server
CI Discord

app iconTachiyomi Extensions

Tachiyomi is a free and open source manga reader for Android 6.0 and above.

This repository contains the available extension catalogues for the Tachiyomi app.

Usage

Extension sources can be downloaded, installed, and uninstalled via the main Tachiyomi app. They are installed and uninstalled like regular apps, in .apk format.

Downloads

If you prefer to directly download the APK files, they are available via https://tachiyomi.org/extensions/ or directly in this GitHub repository in the repo branch.

Requests

Source requests here are meant as up-for-grabs for any developer, thus it's impossible to provide a time estimation for any of them. Furthermore, some sites are impossible to do, usually because of various technical reasons.

Contributing

Contributions are welcome!

Check out the repo's issue backlog for source requests and bug reports.

To get started with development, see CONTRIBUTING.md.

It might also be good to read our CODE_OF_CONDUCT.md.

License

Copyright 2015 Javier Tomás

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Disclaimer

The developer of this application does not have any affiliation with the content providers available.