Coder Social home page Coder Social logo

syndical's Introduction

badges badges badges badges badges Codacy Badge

Syndical

This is an alternative to SamLoader - cleaner code, easier to understand and tamper with.
Written purely in C#. SamLoader was, of course, the base of Syndical, but impemented differently.
Current progress can be viewed here: Trello board.

OSS Licence

We use a free OSS licence from JetBrains to develop Hreidmar.
You can apply to get one here

Why I should use Syndical?

  1. It looks a lot better than any other firmware downloaders
  2. Download & Decrypt is a lot faster, as it won't download the entire file and then only decrypt it.
  3. Because I'll steal your liver

Warning

Samsung ships only two last firmware versions, Fetch is proof.

Screenshots

Download mode

Screenshot_20211127_201356

Fetch mode

Screenshot_20211127_201618

Decrypt mode

Screenshot_20211128_145859

Download & Decrypt mode

Screenshot_20211128_145753

How to use

Arguments

  -m, --mode                  Required. Which mode I should use
  -v, --firmware-version       Firmware version
  -i, --input                 File to decrypt
  -o, --output                Filename for decrypted/downloaded file
  -M, --model                 Required. Device model
  -r, --region                Required. Device region
  -I, --imei                  Required. Device serial or imei number
  -f, --factory               Download factory firmware (Binary Nature)
  -h, --disable-hash-check    Disables hash check in Download mode
  -r, --disable-resume        Disables resume in Download mode
  --help                      Display this help screen.
  --version                   Display version information.

Modes

Download          Download firmware
Decrypt           Decrypt firmware
Fetch             Fetch latest firmware
DownloadDecrypt   Download and decrypt firmware simultaneously

Examples

Download:

./Syndical.Application -m Download -v A207FXXU2CUI2/A207FOXM2CUI2/A207FXXU2CUI2/A207FXXU2CUI2 -M SM-A207F -r SER -I 354260115477798 -f

Decrypt:

./Syndical.Application -m Decrypt -v A207FXXU2CUI2/A207FOXM2CUI2/A207FXXU2CUI2/A207FXXU2CUI2 -M SM-A207F -r SER -I 354260115477798 -f

Download & Decrypt:

./Syndical.Application -m DownloadDecrypt -v A207FXXU2CUI2/A207FOXM2CUI2/A207FXXU2CUI2/A207FXXU2CUI2 -M SM-A207F -r SER -I 354260115477798 -f

Fetch device firmware list:

./Syndical.Application -m Fetch -M SM-A207F -r SER -I 354260115477798

If --factory is present, BINARY_NATURE is set to 1 instead of 0.

Credits

TheAirBlow for Syndical itself
nlscc for SamLoader

Licence

Mozilla Public License Version 2.0

syndical's People

Contributors

theairblow avatar therealmrwicked avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

syndical's Issues

Download Mode doesn't work

There are many problems I think, command line output:
C:\fixphone>Syndical.Application.exe -m DownloadDecrypt -M SM-A510F -r XEO -v A510FXXS8CTI7/A510FOXA8CSF3/A510FXXS8CSF3/A510FXXS8CTI7 -o SamsungFirmware.zip
Device: SM-A510F/XEO
Firmware: A510FXXS8CTI7/A510FOXA8CSF3/A510FXXS8CSF3/A510FXXS8CTI7
Connecting to FUS server...
Verifying firmware version...
Exception occured: Input string was not in a correct format.

some devices not found

example: Syndical.Application -m Fetch -M SM-S757BL -r TFN

but if you have specific version string you can download firmware of it ( not with default built app, cause it will say device does not exist )

but with samloader
./samloader -m SM-S757BL -r TFN download -v S757BLUDS8BTJ1/S757BLTFN8BTJ1/S757BLUDS8BTJ1/S757BLUDS8BTJ1 -O .

so that means samsung possibly has another XML server

Option 'I' is unknown.

Downloaded version 1.1.0 for Windows and I'm unable to run the Fetch command. Getting error "Option 'I' is unknown", and -I isn't listed as a valid argument for the command. --version is also reporting that it's v1.0.0 - see screenshot below.

image

Yes, I'm sure I've downloaded release 1.1.0. Done it 3 times to make sure I wasn't losing my mind...

Did you by chance compile the wrong version for Windows?

Fetch mode doesn't work

Command prompt output:
PS F:\syndical> ./Syndical.Application -m Fetch -M SM-A510F -r XEO
Device: SM-A510F/XEO
Connecting to FUS server...

Fetching firmware list ---------------------------------------- 0% 00:00:00 \

Exception occured: Input string was not in a correct format.

Cannot start

Hello, what is happening with my app?
The Command prompt is opening and closing while running the application.

Trying to download old versions downloads newer ones

Even though fetching available versions shows every version, when trying to download a really old version it downloads the 2nd newest one instead.

Example:
Running ' Syndical -m Fetch -M SM-M236B -r ARO ' returns

Version Android Size Latest
M236BXXU2CWC1/M236BOWO2CWC1/M236BXXU2CWC1/M236BXXU2CWC1 T(Android 13) 5809879952 False
M236BXXU1AVB3/M236BOWO1AVB4/M236BXXU1AVB2/M236BXXU1AVB3 S(Android 12) 5730130240 False
M236BXXU1AVC4/M236BOWO1AVB4/M236BXXU1AVC4/M236BXXU1AVC4 S(Android 12) 5730130240 False
M236BXXS1AVDC/M236BOWO1AVB4/M236BXXU1AVC4/M236BXXS1AVDC S(Android 12) 5730130240 False
M236BXXU1BVK5/M236BOWO1BVK5/M236BXXU1BVK6/M236BXXU1BVK5 T(Android 13) 5809879952 False
M236BXXS2BWB1/M236BOWO2BWB1/M236BXXS2BWB1/M236BXXS2BWB1 T(Android 13) 5809879952 False
M236BXXU1AVH1/M236BOWO1AVH1/M236BXXU1AVG4/M236BXXU1AVH1 S(Android 12) 5730130240 False
M236BXXU1AVD2/M236BOWO1AVB4/M236BXXU1AVC4/M236BXXU1AVD2 S(Android 12) 5730130240 False
M236BXXU1AVG1/M236BOWO1AVE1/M236BXXU1AVE2/M236BXXU1AVG1 S(Android 12) 5730130240 False
M236BXXU1AVC1/M236BOWO1AVB4/M236BXXU1AVC1/M236BXXU1AVC1 S(Android 12) 5730130240 False
M236BXXU1AVC1/M236BOWO1AVB4/M236BXXU1AVC1/M236BXXU1AVC1 T(Android 13) 5809879952 False

But when I try to download 'M236BXXU1AVC1/M236BOWO1AVB4/M236BXXU1AVC1/M236BXXU1AVC1' (The oldest one) by running:
' Syndical -m DownloadDecrypt -v M236BXXU1AVC1/M236BOWO1AVB4/M236BXXU1AVC1/M236BXXU1AVC1 -M SM-M236B -r ARO -f '

it downloads 'M236BXXU1BVK5/M236BOWO1BVK5/M236BXXU1BVK6/M236BXXU1BVK5' (The 2nd newest) instead

This issue seems to be because Samsung only stores the last 2 versions on their servers, There should be a warning about this as because of this I accidentally updated my phone loosing the chance to flash a custom recovery

Please fix this promptly, Thanks for your help
Valentino Rebagliati

Suggestion: Add GUI version

If somebody don't know how to/have access to Terminal, the persons can't use your tool.
Please create GUI version of Syndical, you can serve Syndical in a new repository

Decryption fails?

Using latest source code as of 2024-01-05, it is not possible to unzip the downloaded and decrypted firmware:

$ ./TheAirBlow.Syndical.Application -m DownloadDecrypt -v G970FXXSGHWC1/G970FOXMGHWA3/G970FXXSGHWB3 -M SM-G970F -r SEB -I RF8M81TZ4VB -f
Device: SM-G970F/SEB
Firmware: G970FXXSGHWC1/G970FOXMGHWA3/G970FXXSGHWB3/G970FXXSGHWC1
Connecting to FUS server...
Verifying firmware version...
Fetching firmware information...
Initializing download...
Destination: SM-G970F_5_20230303113410_3xhglg47s4_fac.zip
WANRING: No hash check will be performed.
Firmware download & decryption done!                                                                                   
                                                                                                                       
Downloading & Decrypting firmware ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 5.9 GB 43.2 MB/s 00:00:00 00:03:42     
                                                                                                                       
$ unzip SM-G970F_5_20230303113410_3xhglg47s4_fac.zip
Archive:  SM-G970F_5_20230303113410_3xhglg47s4_fac.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of SM-G970F_5_20230303113410_3xhglg47s4_fac.zip or
        SM-G970F_5_20230303113410_3xhglg47s4_fac.zip.zip, and cannot find SM-G970F_5_20230303113410_3xhglg47s4_fac.zip.ZIP, period.

FUS and decryption keys need updating

Samsung made some recent changes preventing downloads since the latest smart switch update, both Frija and Bifrost have been updated and work properly now.

See this commit from Bifrost for exactly what I am talking about.

I am making the issue just to notify you of the issue.

(Also not related to the current issue, but I think you should update the binaries provided in the releases section for people who may not know how to compile the C# code.)

Thank you - MrWicked

Issue with Spectre.Console.StyleParser.Parse

Command:
Syndical.Application -m Download -v A235FXXU4CWH1/A235FOXE4CWH1/A235FXXU4CWH7/A235FXXU4CWH1 -M SM-A235F -r SER -f

Issue:
Exception occured: Could not find color or style 'yelloe'.

Logs:

System.InvalidOperationException: Could not find color or style 'yelloe'.
at Spectre.Console.StyleParser.Parse(String text) in //src/Spectre.Console/StyleParser.cs:line 20
at Spectre.Console.MarkupParser.Parse(String text, Style style) in /
/src/Spectre.Console/Internal/Text/Markup/MarkupParser.cs:line 26
at Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, String value) in //src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:line 41
at Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, String value) in /
/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:line 62
at Syndical.Application.Program.<>c__DisplayClass2_0.

b__3(ProgressContext ctx)
at Spectre.Console.Progress.<>c__DisplayClass25_0.b__0(ProgressContext ctx) in //src/Spectre.Console/Live/Progress/Progress.cs:line 70
at Spectre.Console.Progress.<>c__DisplayClass27_0.<b__0>d.MoveNext() in /
/src/Spectre.Console/Live/Progress/Progress.cs:line 103
--- End of stack trace from previous location ---
at Spectre.Console.Progress.<>c__DisplayClass28_01.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:line 138 --- End of stack trace from previous location --- at Spectre.Console.Internal.DefaultExclusivityMode.Run[T](Func1 func) in //src/Spectre.Console/Internal/DefaultExclusivityMode.cs:line 44
at Spectre.Console.Progress.StartAsync[T](Func2 action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:line 121 at Spectre.Console.Progress.StartAsync(Func2 action) in /
/src/Spectre.Console/Live/Progress/Progress.cs:line 101
at Spectre.Console.Progress.Start(Action1 action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:line 74 at Syndical.Application.Program.<>c.<Main>b__2_0(Options o) at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action`1 action)
at Syndical.Application.Program.Main(String[] args)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.