59 Commits

Author SHA1 Message Date
MasOnShi
3ac472a198 fix bugs. 2022-04-06 20:21:30 +08:00
MasOnShi
c3ed1499cc more details. 2022-04-05 15:07:08 +08:00
MasOnShi
637bc99b44 recommits 2022-04-04 21:39:12 +08:00
MasOnShi
d294746a36 adds test unit 2022-04-04 21:28:59 +08:00
MasOnShi
db41e7942c adds test unit 2022-04-04 21:28:02 +08:00
MasOnShi
d8f253e0c8 adds test unit 2022-04-04 21:26:15 +08:00
MasOnShi
19e73b6c79 adds support for linux-x64 2022-04-04 20:26:45 +08:00
MasOnShi
e6b6d7a9e1 Merge remote-tracking branch 'origin/master' 2022-04-04 20:12:28 +08:00
MasOnShi
ea2e2b479c adds support for linux-x64 2022-04-04 20:12:16 +08:00
MasOnShi
e562f37282 Merge branch 'auto-analysis-dev' 2022-04-04 20:09:59 +08:00
Mason Shi
b8726b62ae Merge pull request #58 from Mas0nShi/auto-analysis-dev
#57: add support for linux-x64
2022-04-04 20:08:12 +08:00
MasOnShi
e6d3d5aaff resolved 2022-04-04 20:07:57 +08:00
MasOnShi
2e5bfcfb50 change readme content 2022-04-04 19:21:01 +08:00
MasOnShi
bab9df1f5f Merge remote-tracking branch 'origin/master'
# Conflicts:
#	README.md
2022-04-04 19:10:00 +08:00
Mason Shi
1c701eb7ae Update README.md 2022-04-04 17:24:24 +08:00
Mason Shi
df4320c481 Merge pull request #56 from Mas0nShi/auto-analysis-dev
adds badge
2022-04-04 17:08:55 +08:00
Mason Shi
37cb084073 Update manual.yml 2022-04-04 17:06:01 +08:00
Mason Shi
ce93881acd Merge pull request #54 from Mas0nShi/auto-analysis-dev
change readme content
2022-04-04 16:32:32 +08:00
Mason Shi
8659ad77d8 Merge pull request #52 from Mas0nShi/auto-analysis-dev
add win x86 supports.
2022-04-04 16:11:30 +08:00
MasOnShi
591853fd67 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	auto-analysis/utils.py
2022-04-04 16:09:27 +08:00
MasOnShi
8df8b7f18e add win x86 supports. 2022-04-04 16:08:36 +08:00
Mason Shi
6968976033 Update manual.yml 2022-04-04 15:30:10 +08:00
MasOnShi
b582671923 add win x86 supports. 2022-04-04 15:11:01 +08:00
MasOnShi
ff414f6d79 add win x86 supports. 2022-04-04 15:11:01 +08:00
MasOnShi
3643ec2de3 dev commits. 2022-04-04 15:11:01 +08:00
MasOnShi
a312537aa2 dev commits. 2022-04-04 15:11:01 +08:00
Mason Shi
97a4f578b6 Merge pull request #50 from Mas0nShi/auto-analysis-dev
add win x86 supports.
2022-04-04 15:10:15 +08:00
Mason Shi
df5bb4473f Update manual.yml 2022-04-04 15:03:18 +08:00
Mason Shi
facaed285a Merge pull request #49 from Mas0nShi/auto-analysis-dev
add win x86 supports.
2022-04-04 14:58:00 +08:00
Mason Shi
c984fd06c0 Merge pull request #48 from Mas0nShi/auto-analysis-dev
Auto analysis dev
2022-04-04 13:53:29 +08:00
Mason Shi
b8f870e55f Update manual.yml 2022-04-04 13:45:57 +08:00
Mason Shi
4d635ec11f Update manual.yml 2022-04-04 13:43:20 +08:00
Mason Shi
2d106c7e48 Update manual.yml 2022-04-04 13:42:01 +08:00
Mason Shi
8f070902e0 Update manual.yml 2022-04-04 13:39:22 +08:00
Mason Shi
f9bb673a51 Update manual.yml 2022-04-04 13:35:45 +08:00
Mason Shi
8ee3a91b18 Update manual.yml 2022-04-04 13:30:16 +08:00
Mason Shi
c262491d67 Merge pull request #47 from Mas0nShi/auto-analysis-dev
dev commits.
2022-04-04 13:27:21 +08:00
Mason Shi
2ff0a25c1f Update manual.yml 2022-04-04 13:26:57 +08:00
Mason Shi
785b3bcd49 Update manual.yml 2022-04-04 13:17:29 +08:00
Mason Shi
40a95424b0 Update manual.yml 2022-04-04 13:03:21 +08:00
Mason Shi
cd28ff03d9 Update manual.yml 2022-04-04 12:53:23 +08:00
Mason Shi
7aaba1739a Update manual.yml 2022-04-04 12:43:04 +08:00
Mason Shi
7d73c08257 Update manual.yml 2022-04-04 12:42:14 +08:00
Mason Shi
d2fd9f12bf Update manual.yml 2022-04-04 12:22:50 +08:00
Mason Shi
142367e963 Update manual.yml 2022-04-03 22:53:08 +08:00
Mason Shi
7e1916e8e9 Update manual.yml 2022-04-03 22:45:50 +08:00
Mason Shi
fe77785833 Update manual.yml 2022-04-03 22:37:38 +08:00
Mason Shi
53a9057a2c Update manual.yml 2022-04-03 22:34:17 +08:00
Mason Shi
1df0199b91 Update manual.yml 2022-04-03 22:08:37 +08:00
Mason Shi
9b298bc024 Update manual.yml 2022-04-03 22:03:10 +08:00
Mason Shi
029a4a344f Update manual.yml 2022-04-03 22:00:37 +08:00
Mason Shi
3e690f077d Update manual.yml 2022-04-03 21:59:50 +08:00
Mason Shi
5c518c7ab8 Update manual.yml 2022-04-03 21:58:21 +08:00
Mason Shi
fc578afd40 Update manual.yml 2022-04-03 21:56:07 +08:00
Mason Shi
4b3cfee43f Create manual.yml 2022-04-03 21:50:50 +08:00
Mason Shi
9369288989 Merge pull request #46 from Mas0nShi/auto-analysis-dev
Auto analysis dev
2022-04-03 21:50:34 +08:00
Mason Shi
d90f36ba80 Update README_CN.md 2022-03-30 21:17:28 +08:00
Mason Shi
6c5039c632 Update README.md 2022-03-30 21:16:50 +08:00
Mason Shi
f44e9355fb Update issue templates 2022-03-24 19:36:36 +08:00
7 changed files with 216 additions and 12 deletions

22
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,22 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
- OS: [e.g. Ubuntu]
- Version [e.g. 1.1.2]
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.

166
.github/workflows/manual.yml vendored Normal file
View File

@@ -0,0 +1,166 @@
# This is a basic workflow that is manually triggered
name: Automatic analysis
# Controls when the action will run. Workflow runs when manually triggered using the UI
# or API.
on:
workflow_dispatch:
schedule:
- cron: '23 21 * * 1'
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "greet"
check_version:
name: check the latest version
# The type of runner that the job will run on
runs-on: ubuntu-20.04
outputs:
RELEASE_VERSION: ${{ steps.getLatestRelease.outputs.RELEASE_VERSION }}
LATEST_VERSION: ${{ steps.checkVersion.outputs.LATEST_VERSION }}
steps:
- name: Get Latest Release
id: getLatestRelease
uses: actions/github-script@v3.1.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const releaseResponse = await github.repos.getLatestRelease({
owner: 'Mas0nShi',
repo: 'typoraCracker',
})
const {
data: { tag_name: ver }
} = releaseResponse;
core.setOutput('RELEASE_VERSION', ver);
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.8' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- name: install dependencies
run: |
sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install innoextract -y
python3 -m pip install loguru
- name: Check Latest Version (use win-x64)
id: checkVersion
run: |
python3 auto-analysis/check_version.py
output="$(cat auto-analysis/win/x64/LATEST_VERSION)"
echo "$output"
echo "::set-output name=LATEST_VERSION::$output"
create_release:
needs: check_version
runs-on: ubuntu-20.04
if: needs.check_version.outputs.RELEASE_VERSION != needs.check_version.outputs.LATEST_VERSION
steps:
- run: echo '${{ needs.check_version.outputs.LATEST_VERSION }}'
- name: Create Runner Release
uses: actions/create-release@v1
id: createRelease
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: '${{ needs.check_version.outputs.LATEST_VERSION }}'
release_name: '${{ needs.check_version.outputs.LATEST_VERSION }}'
prerelease: false
patch_file:
needs: [check_version, create_release]
runs-on: ubuntu-20.04
if: needs.check_version.outputs.RELEASE_VERSION != needs.check_version.outputs.LATEST_VERSION
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.8'
architecture: 'x64'
- name: install dependencies
run: |
sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install innoextract zip -y
python3 -m pip install r2pipe loguru
- name: build radare2
shell: bash
run: |
git clone https://github.com/radareorg/radare2
radare2/sys/install.sh
- name: patch version
run: |
python3 auto-analysis/patch.py
zip -rjq auto-analysis/win/x64/build/typoraCracker.zip auto-analysis/win/x64/build/*
zip -rjq auto-analysis/win/x86/build/typoraCracker.zip auto-analysis/win/x86/build/*
zip -rjq auto-analysis/linux/x64/build/typoraCracker.zip auto-analysis/linux/x64/build/*
- name: Check release version
id: checkReleaseVersion
uses: actions/github-script@v3.1.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
try {
const releaseVersion = '${{ needs.check_version.outputs.LATEST_VERSION }}'
const releaseResponse = await github.repos.getReleaseByTag({
owner: 'Mas0nShi',
repo: 'typoraCracker',
tag: releaseVersion
})
const {
data: { id: releaseId, html_url: htmlUrl, upload_url: uploadUrl }
} = releaseResponse;
core.setOutput('id', releaseId);
core.setOutput('html_url', htmlUrl);
core.setOutput('upload_url', uploadUrl);
core.setOutput('version', releaseVersion);
} catch (e) {
core.setFailed(e.message);
}
- name: Upload win-x64
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: '${{ steps.checkReleaseVersion.outputs.upload_url }}'
asset_path: '${{ github.workspace }}/auto-analysis/win/x64/build/typoraCracker.zip'
asset_name: 'typoraCracker-${{ needs.check_version.outputs.LATEST_VERSION }}-win-x64.zip'
asset_content_type: application/zip
- name: Upload win-x86
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: '${{ steps.checkReleaseVersion.outputs.upload_url }}'
asset_path: '${{ github.workspace }}/auto-analysis/win/x86/build/typoraCracker.zip'
asset_name: 'typoraCracker-${{ needs.check_version.outputs.LATEST_VERSION }}-win-x86.zip'
asset_content_type: application/zip
- name: Upload linux-x64
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: '${{ steps.checkReleaseVersion.outputs.upload_url }}'
asset_path: '${{ github.workspace }}/auto-analysis/linux/x64/build/typoraCracker.zip'
asset_name: 'typoraCracker-${{ needs.check_version.outputs.LATEST_VERSION }}-linux-x64.zip'
asset_content_type: application/zip
- name: verify scripts
run: |
python3 -m pip install -r auto-analysis/win/x64/build/requirements.txt
python3 auto-analysis/win/x64/build/typora.py auto-analysis/win/x64/app/resources/app.asar auto-analysis/win/x64
echo "win x64 test completed"
python3 auto-analysis/win/x86/build/typora.py auto-analysis/win/x86/app/resources/app.asar auto-analysis/win/x86
echo "win x86 test completed"
python3 auto-analysis/linux/x64/build/typora.py auto-analysis/linux/x64/bin/Typora-linux-x64/resources/app.asar auto-analysis/linux/x64
echo "linux x64 test completed"

View File

@@ -3,10 +3,19 @@
# typora Cracker # typora Cracker
![GitHub Repo stars](https://img.shields.io/github/stars/Mas0nshi/typoraCracker)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/Mas0nshi/typoraCracker)
![GitHub commit activity (branch)](https://img.shields.io/github/commit-activity/m/Mas0nshi/typoraCracker)
![GitHub Release Date](https://img.shields.io/github/release-date/Mas0nshi/typoraCracker)
![GitHub issues](https://img.shields.io/github/issues-raw/Mas0nshi/typoraCracker?color=ff69b4)
![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/Mas0nshi/typoraCracker)
![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FMas0nShi%2FtyporaCracker.svg?type=shield) ![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FMas0nShi%2FtyporaCracker.svg?type=shield)
![GitHub](https://img.shields.io/github/license/Mas0nShi/typoraCracker) ![GitHub](https://img.shields.io/github/license/Mas0nShi/typoraCracker)
[![Automatic analysis](https://github.com/Mas0nShi/typoraCracker/actions/workflows/manual.yml/badge.svg)](https://github.com/Mas0nShi/typoraCracker/actions/workflows/manual.yml) [![Automatic analysis](https://github.com/Mas0nShi/typoraCracker/actions/workflows/manual.yml/badge.svg)](https://github.com/Mas0nShi/typoraCracker/actions/workflows/manual.yml)
A extract & decryption and pack & encryption tools for typora. A extract & decryption and pack & encryption tools for typora.
中文说明请戳[这里](README_CN.md) 中文说明请戳[这里](README_CN.md)
@@ -30,7 +39,7 @@ ANY PROBLEMS ARISING FROM THIS WILL BE BORNE BY THE USER (YOU).
| OS / ARCH | x86 | x64 | arm64 | | OS / ARCH | x86 | x64 | arm64 |
|:---------:|:---:|:---:|:-----:| |:---------:|:---:|:---:|:-----:|
| win | ✅ | ✅ | ❌ | | win | ✅ | ✅ | ❌ |
| linux | | | ❌ | | linux | | | ❌ |
| macOS | ❌ | ❌ | ❌ | | macOS | ❌ | ❌ | ❌ |

View File

@@ -25,7 +25,7 @@
| OS / ARCH | x86 | x64 | arm64 | | OS / ARCH | x86 | x64 | arm64 |
|:---------:|:---:|:---:|:-----:| |:---------:|:---:|:---:|:-----:|
| win | ✅ | ✅ | ❌ | | win | ✅ | ✅ | ❌ |
| linux | | | ❌ | | linux | | | ❌ |
| macOS | ❌ | ❌ | ❌ | | macOS | ❌ | ❌ | ❌ |

View File

@@ -17,4 +17,9 @@ DOWNLOAD_LINK = {
"x64": "https://download.typora.io/linux/Typora-linux-x64.tar.gz", "x64": "https://download.typora.io/linux/Typora-linux-x64.tar.gz",
"arm64": "https://download.typora.io/linux/Typora-linux-arm64.tar.gz", "arm64": "https://download.typora.io/linux/Typora-linux-arm64.tar.gz",
}, },
}
EXTRACT_ROOT_PATH = {
"win": "app",
"linux": "bin/Typora-linux-x64"
} }

View File

@@ -6,12 +6,11 @@
@Desc: It's all about getting better. @Desc: It's all about getting better.
""" """
from loguru import logger as log from loguru import logger as log
from config import DOWNLOAD_LINK from config import DOWNLOAD_LINK, EXTRACT_ROOT_PATH
import subprocess import subprocess
import json import json
import os import os
BASE_DIR = os.path.dirname(__file__) BASE_DIR = os.path.dirname(__file__)
@@ -23,11 +22,14 @@ def get_version(to_path):
def download_file(from_link, to_path): def download_file(from_link, to_path):
subprocess.check_call(["wget", from_link, "-O", to_path]) subprocess.check_call(["wget", "-q", from_link, "-O", to_path])
def extract_file(from_path, to_path): def extract_file(from_path, to_path):
subprocess.check_call(["innoextract", from_path, "-d", to_path]) if from_path.endswith(".exe"):
subprocess.check_call(["innoextract", "-q", from_path, "-d", to_path])
elif from_path.endswith(".tar.gz"):
subprocess.check_call(["tar", "-zxvf", from_path, "-C", to_path])
def patch_file(_key, _iv, to_dir): def patch_file(_key, _iv, to_dir):
@@ -44,8 +46,7 @@ def patch_file(_key, _iv, to_dir):
open(patch_file_path, "w").write(content) open(patch_file_path, "w").write(content)
def scheduler(func, basedir, link): def scheduler(func, basedir, link, root_path):
download_path = os.path.join(basedir, os.path.basename(link)) download_path = os.path.join(basedir, os.path.basename(link))
log.info(f"downloading from {link}") log.info(f"downloading from {link}")
download_file(link, download_path) download_file(link, download_path)
@@ -53,7 +54,8 @@ def scheduler(func, basedir, link):
extract_file(download_path, basedir) extract_file(download_path, basedir)
log.info("preparation stage completed") log.info("preparation stage completed")
main_node_path = os.path.join(basedir, "app/resources/app.asar.unpacked/main.node")
main_node_path = os.path.join(basedir, os.path.join(root_path, "resources/app.asar.unpacked/main.node"))
log.info("auto analysis start") log.info("auto analysis start")
key, iv = func.get_aes_key_and_iv(main_node_path) key, iv = func.get_aes_key_and_iv(main_node_path)
log.success("analysis done") log.success("analysis done")
@@ -66,21 +68,21 @@ def win_x64_run():
from win.x64 import analysis from win.x64 import analysis
dirs = os.path.join(BASE_DIR, "win/x64") dirs = os.path.join(BASE_DIR, "win/x64")
url = DOWNLOAD_LINK["win"]["x64"] url = DOWNLOAD_LINK["win"]["x64"]
scheduler(func=analysis, basedir=dirs, link=url) scheduler(func=analysis, basedir=dirs, link=url, root_path=EXTRACT_ROOT_PATH["win"])
def win_x86_run(): def win_x86_run():
from win.x86 import analysis from win.x86 import analysis
dirs = os.path.join(BASE_DIR, "win/x86") dirs = os.path.join(BASE_DIR, "win/x86")
url = DOWNLOAD_LINK["win"]["x86"] url = DOWNLOAD_LINK["win"]["x86"]
scheduler(func=analysis, basedir=dirs, link=url) scheduler(func=analysis, basedir=dirs, link=url, root_path=EXTRACT_ROOT_PATH["win"])
def linux_x64_run(): def linux_x64_run():
from linux.x64 import analysis from linux.x64 import analysis
dirs = os.path.join(BASE_DIR, "linux/x64") dirs = os.path.join(BASE_DIR, "linux/x64")
url = DOWNLOAD_LINK["linux"]["x64"] url = DOWNLOAD_LINK["linux"]["x64"]
scheduler(func=analysis, basedir=dirs, link=url) scheduler(func=analysis, basedir=dirs, link=url, root_path=EXTRACT_ROOT_PATH["linux"])
if __name__ == '__main__': if __name__ == '__main__':

Binary file not shown.