MAGISK MODULE ❯ Universal SafetyNet Fix 2.3.1

Search This thread

eyalsa

Senior Member
Aug 21, 2017
104
16
Do you use @Displax/ USNF_mod solution for Play Integrity only?
yes
What if you just disable all LSPosed modules?... (If results change, try enabled modules one by one to determine which or if all modules trigger detection.)
I fail even if disabeling all models
What is LSPosed version?
1.8.4 zygisk
Nb. Of course 2/3 is best case w/ root...

Nb 2. Shamiko generally won't help w/ Google attestation, but some have recently reported success reversing failed verdicts w/ Shamiko if gms (G Play Services) are in denylist...
The 1st thing i did was to put play services and frameworks to denaylist.
 
  • Like
Reactions: pndwal

GenRahul

Member
Apr 24, 2017
5
2
So, here is my modification of USNF with Play Integrity API bypass.

It changes fingerprint to old 7.1.2 6.0 (LOL) and apply it only for GMS SafetyNet process (by Zygisk injection), so your original prints/security path level does not change. This avoids many side effects/problems with global props changing.

Updated:
Drop fingerprint to lowest possible (6.0) to ensure that no one use same Android version

Usage:
1. Delete/disable/reset MagiskHidePropsConfig (if installed).
2. Just install it over old Universal SafetyNet Fix and reboot device.

Many thanks to @1nikolas for integrity checker.

Source code: https://github.com/Displax/safetynet-fix/tree/integrity
Thanks man!
 

ykjae

Senior Member
Oct 19, 2013
291
36
OnePlus 8T
I'm on oneplus 8t 5g android 12 and I pass safetynet and play integrity (other then hardware) without any additional modules.

Not even magisk props or usf kdrag0n/displax

I am using shamiko and have lsposed installed. It's strange to me.
 

pndwal

Senior Member
I'm on oneplus 8t 5g android 12 and I pass safetynet and play integrity (other then hardware) without any additional modules.

Not even magisk props or usf kdrag0n/displax

I am using shamiko and have lsposed installed. It's strange to me.
Nope no custom rom. Just OxygenOS 12.1, KB2003_11_C.35

Passed without shamiko also - but that was with denylist enabled.
Ok...

First, I'm assuming you have main (com.google.android.gms) and attestation (com.google.android.gms.unstable) Google Play Services processes in denylist (to hide 'root' from these)...

Many custom ROMs integrate @kdrag0ns Safety net Fix and passing device fingerprint, but this doesn't apply..

OnePlus has notoriously produced devices with broken keymaster implementation (processes keystore values in TEE OS) incl. the 8T, so Attestation falls back to Basic Evaluation type (trigger is exception caused by broken keymaster) and Hardware attestation is not enforced (based on device model prop in S/N API and both model and fingerprint props and possibly security patch level in PI API ) without the need for USNF fallbacks / bypasses...

Passing CTS Profile match still requires a passing device fingerprint (you have this on non China region stock ROM; custom ROMs may need to adjust props), and as long as no sensitive props are detected (NB. MHPC adjusts such detected props w/o any configuration if active so this is an alternative to running USNF, which also does this, where sensitive props are an issue), and it seems none are affecting your device - I believe it's more of a problem for legacy devices/older ROMs anyway -, and no other mods break device integrity, device security attestations will just pass!... 😋 PW
 
Last edited:

stathis

Senior Member
May 10, 2015
149
12
Xiaomi Poco X3 NFC
Very strange, today Google play store show me again the Netflix and some other apps which had been missing since July, I don't have changed anything in my phone, I have Xiaomi Poco X3 NFC android 10, magisk 23 with magisk hide com.google.android.gms.unstable and module riru 26.1.3 and Universal SafetyNet Fix 2.1.1 by kdrag0n
 

dimm0k

Senior Member
Jan 25, 2014
1,694
654
Google Pixel 4 XL
having some really weird issues where GPay and my Pixel 6 Pro tells me that it doesn't meet the right requirements for pay, yet I can still make payments by tapping... this was using the unmodded USNF 2.2.0. if i remove that and install the modded version, I still get the same quirk except in Magisk I see this update icon for this module even after rebooting. anyone know how to fix the update issue, as well as the requirements message?
 

Attachments

  • Screenshot_20221005-112921.png
    Screenshot_20221005-112921.png
    122.9 KB · Views: 77

73sydney

Senior Member
having some really weird issues where GPay and my Pixel 6 Pro tells me that it doesn't meet the right requirements for pay, yet I can still make payments by tapping... this was using the unmodded USNF 2.2.0. if i remove that and install the modded version, I still get the same quirk except in Magisk I see this update icon for this module even after rebooting. anyone know how to fix the update issue, as well as the requirements message?

weird issues have been noted in the current times (even using the modded version), best is to not wonder why but bathe in the ability to still use thy contactless functions

ignore the Update icon.....
 
  • Like
Reactions: dimm0k

pndwal

Senior Member
having some really weird issues where GPay and my Pixel 6 Pro tells me that it doesn't meet the right requirements for pay, yet I can still make payments by tapping... this was using the unmodded USNF 2.2.0. if i remove that and install the modded version, I still get the same quirk except in Magisk I see this update icon for this module even after rebooting. anyone know how to fix the update issue,
There's no issue... Icon is greyed out so there's no update... That'll change when there is...
as well as the requirements message?
Check you now have deviceIntegrity passing in Play Integrity API Checker.

This had probably failed prior to installing @Displax USNF mod/fork but Google has been turning new Play Integrity hardware attestation evaluation type enforcement on and off spasmodically for different devices and at different times lately...

If passing now G Pay/Wallet error message may just go away after some days...

For immediate fixes:

Clear Google Play Services data.

Clear G Pay/Wallet data and reboot before starting app again (important to avoid issues like Activity list failing to populate)... Take any updates and set up cards again as needed...

If you can't see G Pay/Wallet in Play Store, clear Play Store data then check Play Protect says Device is certified in Play Store settings...

🤠 PW
 
  • Like
Reactions: dimm0k

pndwal

Senior Member
Very strange, today Google play store show me again the Netflix and some other apps which had been missing since July, I don't have changed anything in my phone, I have Xiaomi Poco X3 NFC android 10, magisk 23 with magisk hide com.google.android.gms.unstable and module riru 26.1.3 and Universal SafetyNet Fix 2.1.1 by kdrag0n
Play Store now relies on Play Integrity API since SafetyNet is deprecated and will hide many apps in store if deviceIntegrity verdict fails...

As mentioned above, Google has been turning new Play Integrity hardware attestation evaluation type enforcement on and off spasmodically for different devices and at different times lately...

It seems Google has simply reverted this enforcement for your device recently, but you should probably apply a bypass fix as it's likely they'll restore enforcement when they've sorted out any regression issues for your device...

Clearly you cannot use @Displax modded USNF version with Play Integrity fix with pre-Zygisk magisk. You can try @huskydg's Riru compatible mod here however:
https://github.com/HuskyDG/safetynet-integrity-fix

👀 PW
 
  • Like
Reactions: okij

stathis

Senior Member
May 10, 2015
149
12
Xiaomi Poco X3 NFC
Play Store now relies on Play Integrity API since SafetyNet is deprecated and will hide many apps in store if deviceIntegrity verdict fails...

As mentioned above, Google has been turning new Play Integrity hardware attestation evaluation type enforcement on and off spasmodically for different devices and at different times lately...

It seems Google has simply reverted this enforcement for your device recently, but you should probably apply a bypass fix as it's likely they'll restore enforcement when they've sorted out any regression issues for your device...

Clearly you cannot use @Displax modded USNF version with Play Integrity fix with pre-Zygisk magisk. You can try @huskydg's Riru compatible mod here however:
https://github.com/HuskyDG/safetynet-integrity-fix

👀 PW
Oh, understand, I have read about this, until now I'm little lucky until broke again and not see the apps, so now I see again the apps who hide it in Google Play from the July until post this
 
  • Like
Reactions: pndwal

YMatrix

Senior Member
Hey
So I have been using the moded safetynet fix by Displax without trouble... Till now.
I had a Google wallet update and suddenly it has stopped working.
Tried tinkering with all options, using shamiko, but without success.
I am using this on my s20fe 5g on a custom oneui rom
Any advice?
Change device fingerprint?
 

pndwal

Senior Member
Hey
So I have been using the moded safetynet fix by Displax without trouble... Till now.
I had a Google wallet update and suddenly it has stopped working.
Tried tinkering with all options, using shamiko, but without success.
I am using this on my s20fe 5g on a custom oneui rom
Any advice?
Change device fingerprint?
Probably only need some resets...

As mentioned above, Google has been turning new Play Integrity hardware attestation evaluation type enforcement on and off spasmodically for different devices and at different times lately...

Check deviceIntegrity first; see here:
https://forum.xda-developers.com/t/...agisk-discussion-thread.3906703/post-87481637
... Re. resets, scroll down and see 'Related Issues'... 👍 PW
 

Exokan

Senior Member
Sep 15, 2016
69
15
Hi, probably a dumb question... Pixel 6 on A13. Used USNF mod to get cards to work (works great!). However, I was previously also using MHPC to add a notethering prop. Can USNF and MHPC not work together because they're essentially both trying to modify the props and would conflict?
 

Top Liked Posts

  • 4
    Do you guys have any idea what might be wrong with my device props or something?
    It is a OnePlus 7T. 😜

    There're some threads at Github and XDA forum about broken fingerprint scanner at OnePlus/Oppo devices, but they seem to be outdated, because (in theory) problem was fixed in recent versions of USNF.

    But even with latest v2.3.1 my OnePlus 7T (OxygenOS 12.1, HD1903_11_F.17) can't recognize fingerprints. Disabling module fixes it immediately, but obviously SafetyNet is lost without module enabled.

    Do you guys have any idea what might be wrong with my device props or something?

    I've tried installing this fix https://github.com/wuxianlin/ColorOSMagisk along with USNF - but with no luck.
    It has been a while and I do not remember what props set when/where broke this or that.
    I know OnePlus OPPO has had some issues with props being set early or late.

    Give Displax's mod version a try.
    Displax USNF-Mod - [GitHub] - Releases
    Besides the Play Integrity hack, it also included some updates to the props.

    ---

    It has been awhile since the last time I tired 12 (beta 2?) on my 7T, I had major issues.
    So I grabbed the fastboot downgrade and went back to 11 and it has been sitting since.
    Not even rooted. 🙃

    I found a download link for 7T (Global) from 11->12 OTA, currently installing.

    Will see what happend on my end once I get it setup and rooted.

    Cheers. :cowboy:
    3
    I'll give it a try, but github says that this fork is identical to the original USNF
    "There isn’t anything to compare.
    kdrag0n:master and Displax:v2.3.1-MOD_2.0 are identical."
    It's most certainly not the same!

    Perhaps you're looking at Master forked branch... These often represent the clean forked commits only... Change to Integrity branch... 10 commits ahead... Can use either of two releases for most devices... Mod 2 needed only for Pixel 7 series or devices launching with A13, but does seem to address fingerprint scanners and other issues further...

    This fork may well fix your fingerprint issue...

    You'll find OnePlus/fingerprint/A12+ specific changes (some due to experimenting) here:
    Move safetynet props to boot completed to fix fingerprint not working…
    … on OOS12
    here:
    Bypassing forced STRONG integrity
    * SafetyNet/Play Integrity (bypassing forced STRONG integrity for devices that shipped with 13+) by drop "first_api_level" to <33
    * Some cosmetics/fixes
    and here:
    Move "ro.is_ever_orange" out of boot_completed

    The last commit may be critical for you meaning Mod 2 release may be best for OnePlus users even on devices other than P7 / A13 LV devices...

    Great info/discussion on @Displax's "A universal fix for SafetyNet and Play Integrity API on Android 8–13 devices with hardware attestation and unlocked bootloaders" fork/proposal for official fix in official PR here:
    Play Integrity Api bypass

    👀 PW
    2
    I want to follow Shamiko properly so I need your help please. I'm sorry I read shamiko thing and I did not understood.

    My condition now: I have magisk (hide mode) with Enforce denylist enabled and those 5 root apps selected already. Only the HDFC is not working and still detecting root.

    So do I need to do below steps? Please correct the steps if you feel they are wrong:
    -I have to disable the enforce denylist in magisk
    -Flash shamiko.zip
    -Then open magisk and enforce denylist and select root detect apps right?


    When using shamiko = DISABLE "Enforce Deny List"
    When NOT using shamiko = ENABLE "Enforce Deny List"
    2
    @zgfg

    73sydney

    I found a work around (no Lsposed, HMA, shamiko needed, they did not work too).

    So,
    1. I have cleared data and uninstalled the RTO, Medibuddy app which were detecting root and were not working.
    2. Uninstalled Magisk
    3. Reboot phone
    4. Installed Magisk latest 25.2 > Settings > Enabled 'Zygisk' and Checked 'Enforce DenyList'
    5. Hide Magisk (need to do this before installing those root detect apps from PlayStore)
    6. Reboot
    7. Installed RTO and other root detect apps from PlayStore (did not open them yet).
    8. Magisk > Settings > Cofigure DenyList > Checked RTO and other root detecting apps.
    9. Went back back to my phone's home screen.
    10. Reboot.
    11. Launched those RTO and other root detect apps and they worked!

    I would say most root detecting apps would work with the above method however for me out of 5 Root detecting apps, 4 worked except HDFC bank app. It was working fine on Magisk Manager v23.0 with Magisk.zip v22.1.

    Similar to this episode yesterday, where the root detection was ultimately being caused by the users TWRP folder (always check, and umm, recheck the basics folks) :) where i disabled Shamiko to prove, along with @zgfg that it must be something the user overlooked as we were doing the least amount of work to get his problem appto hide...i dont disable Shamiko for most examples, but it was warranted in this case...because nothing was adding up, and it needed to be shown that he must be overlooking something :)

    We dont ALWAYS suggest HMA and Shamiko etc, i usually point out that Shamiko is always enabled on my device when im replying to a post and testing stuff for people though. We all like to use the least amount of gear where possible :)
    2
    @zgfg

    73sydney

    I found a work around (no Lsposed, HMA, shamiko needed, they did not work too).

    So,
    1. I have cleared data and uninstalled the RTO, Medibuddy app which were detecting root and were not working.
    2. Uninstalled Magisk
    3. Reboot phone
    4. Installed Magisk latest 25.2 > Settings > Enabled 'Zygisk' and Checked 'Enforce DenyList'
    5. Hide Magisk (need to do this before installing those root detect apps from PlayStore)
    6. Reboot
    7. Installed RTO and other root detect apps from PlayStore (did not open them yet).
    8. Magisk > Settings > Cofigure DenyList > Checked RTO and other root detecting apps.
    9. Went back back to my phone's home screen.
    10. Reboot.
    11. Launched those RTO and other root detect apps and they worked!

    I would say most root detecting apps would work with the above method however for me out of 5 Root detecting apps, 4 worked except HDFC bank app. It was working fine on Magisk Manager v23.0 with Magisk.zip v22.1.
    Few comments:

    4) If using Shamiko then must not be Enforce DenyList.
    If not using Shamiko then must be Enforced.
    That was many times debated in this thread and so.
    Most of ppl use Shamiko, hence they have disabled Enforce

    5) Fine if it worked for you just with Hide Magisk App.
    However, Hide Magisk app is not enough for some other 'banking' apps and that's why I tested with HMA instead

    Actually, many of us already have LSPosed installed with some modules - they are detected by banking apps and we MUST hide them by HMA.
    That's why I tested with HMA, but I asked you to test by Hide Magisk app instead (since you don't have LSPosed module)

    Good that you tested and that Hide Magisk app was enough for you

    8) RTO or other apps you want to hide root MUST be in DenyList.
    You had to have it from the beginning

    Even if Enforce Denylist is disabled cos of Shamiko, those apps must be checked in DenyList.

    Regarding the old Magisk v22, you probably had it:
    - also Hide Magisk app
    - instead of now in DenyList, you had then RTO in MagiskHide list

    One must checkmark in DenyList (Magisk v24/25) all those 'banking' apps that he previously had checked in MagiskHide (Magisk v22 or earlier)
  • 5
    Could you please send me the links. I couldn't find them In looking for what Kao said.

    I looked for Shamiko but it is not available on github (Genuine source)

    There are so many apps labelled as Hide Apps, Hide an app, not the one you mentioned HMA. Will appreciate if you give direct links.

    bookmark this thread, most files, including Shamiko can be found linked from the first page of the thread, and check the last few pages regularly to keep up with any changes


    Hide My Applist - theres a guide (not yet linked from that page, perhaps @ipdev wants to separate himself from the (planned) madness its devolving into) can be found here:


    But please learn to use the search too, thanks
    4

    I think you missed the part where you ask an actual question, and provide details

    We dont troubleshoot from screenshots alone here....

    Also you seem to have missed reading from any of the last dozen or so pages which would tell you that its no longer just about passing safetynet, and what the fix is...

    You should get into the habit of reading the last pages of any thread before posting a query, as generally if youre experiencing an issue (one thats usually a dramatic change) then others are too, therefore an answer probably has already been provided.

    Posting just a screenshot, no info and expecting people to jump to attention for you will not go well for you here...youre expected to do some work yourself..

    This will get you up to speed, but please, next time, dont be lazy...

    4
    Wow you have achieved it. Yes that is the right app. However I feel we do not have to take so many steps to make few apps work. I appreciate your will though. I wish there was some simple way like I don't like to install Lsposed and other stuff just for 2 apps.

    I wrote on github magisk issue page and the so called magiskbot has closed the issue right after submitting it. Lame!

    I installed HMA, it says not activated. Is it a Lsposed module?
    HMA is LSPosed module. Please do not ask things that are described in the HMA Guide thread, please take your time and read, learn things - you were even given the link to that thread with extensive OP instructions

    I wish many things but they will not materialize

    Btw, TJW (author of Magisk), maybe already two years ago, was hired by Google and he clearly distanced himself from any root hiding. Magisk does not provide that option anymore and you can not report hiding issues for your app as a bug.
    I'm even pretty sure that on his GitHub, Issues page, it is noted that problems with hiding the root must not be reported (not sure did you read things)

    Anyway, steps I made are usually needed for 99% percent of 'banking' apps (apps that seek for 'root') and for most of them no additional steps are needed.
    Hence you need to learn on this first example and in the future you will need only five minutes to hide the root from your next banking app when you step on

    Again, we gave you hints what to read, study and learn - I'm pretty sure you didn't (hence sorry, I will no more waste time on answering you) because you don't follow and still ask for what is covered in those instructions.
    Enough from my side, good luck
    4
    Lo siento mucho, subí las capturas de mi celular para no pasarlas a la PC, estaba pensando en editar para agregar información, pero tuve un problema físico y no podía usar la PC, ahora vi la notificacion y se que hice mal, hasta la proxima que tenga el texto no subire las fotos

    gracias por la advertencia
    Please, this is English forum, use Translate if necessary to post in English
    4
    Still, can you pls post what is the package name of that Google Play Protect Service
    "com. google. android. odad."
  • 282
    Universal SafetyNet Fix
    Magisk module​

    Magisk module to work around Google's SafetyNet attestation.

    This module works around hardware attestation and recent updates to SafetyNet CTS profile checks. You must already be able to pass basic CTS profile attestation, which requires a valid combination of device and model names, build fingerprints, and security patch levels.

    If you still have trouble passing SafetyNet with this module, use MagiskHide Props Config to spoof a certified device profile. This is a common issue on old devices, custom ROMs, and stock ROMs without GMS certification (e.g. Chinese ROMs).

    Android versions up to 13 Beta 3 are supported, including OEM skins such as Samsung One UI and MIUI.

    How does it work?
    The way this workaround works is relatively low-level. An in-depth explanation, as well as source code and ROM changes, can be found on GitHub.

    Ideally, this workaround should be incorporated in ROMs instead of overriding part of the ROM in a Magisk module. The ROM changes for it are linked above for ROM developers to use.

    Downloads
    Downloads and changelogs can be found on GitHub. The topmost release is the latest.

    Latest release
    v2.3.1

    Highlights
    • Fixed fingerprint on OxygenOS/ColorOS 12 (@osm0sis)
    • Support for Magisk 24+ module updates (@benjibobs)
    • Restored support for Android 7
    Other changes
    • Spoofed OnePlus OEM unlock status for futureproofing (@osm0sis)
    • Minor code improvements
    This version only supports Zygisk (Magisk 24 and newer).

    Source code

    If this helped you, please consider donating to support development: recurring donation for sustainable support or buy me a coffee. Thank you for your support!
    176
    So, here is my modification of USNF with Play Integrity API bypass.

    It changes fingerprint to old 7.1.2 6.0 (LOL) and apply it only for GMS SafetyNet process (by Zygisk injection), so your original prints/security path level does not change. This avoids many side effects/problems with global props changing.

    Updated 2.0:
    Bypassing DEVICE_INTEGRITY for devices that shipped with Android 13+ (Pixel`s 7 )

    Updated:
    Drop fingerprint to lowest possible (6.0) to ensure that no one use same Android version

    Usage:
    1. Delete/disable/reset MagiskHidePropsConfig (if installed).
    2. Just install it over old Universal SafetyNet Fix and reboot device.
    3. You may be needed to wipe GMS data (not cache) if there is no result immediately.

    Many thanks to @1nikolas for integrity checker.

    Source code: https://github.com/Displax/safetynet-fix/tree/integrity
    31
    Folks, the SafetyNet API was depreciated last Month with 'full turndown' slated for June 2024 and the introduction of the new Play Integrity API. It has also become clear that Google apps are simply the first to adopt the long foretold Play Integrity API; all responsible banks are bound to follow suit in short order, and at least before the June 2023 migration deadline.

    This means (assuming fully deployed Hardware Key Attestation doesn't come first 😬) that the need for a 'Universal Play Integrity Fix' has become quite urgent.

    We currently have workarounds involving using older fingerprint props by means of MHPC module (similar to fix needed for uncertified ROMs), but success/mileage varies per device and users of regular bank apps / gamers etc on stock devices will all soon be forced to experiment with MHPC prints also... This is hardly ideal.

    So I've made an issue report/request on USNF GitHub as follows. This information may be insightful to users here also...

    Please let me know here if I have missed anything important, or add any technically relevant details there...

    PLEASE DON'T spam that issue with unimportant details or queries... (The previous issue is already burgeoning w/ OT.) That's what this thread is for... 😛 :

    Please make 'Universal Play Integrity Fix' ... #204

    Fixes to expand 'Universal SafetyNet Fix' to become a 'Universal Play Integrity Fix' are needed.

    The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API.
    https://developer.android.com/training/safetynet/deprecation-timeline

    New Play Integrity API is rolling out from June 2022, and evidently Google Play Store and Google Pay/Wallet are already using its verdict.

    June 2023 is the Migration Deadline for app developers. This will also allow their older app versions to continue working with SafetyNet API for a limited time.

    June 2024 is the End of life for SafetyNet API; its attestation will no longer work for any app version, and apps will receive an error.

    The new Integrity API has more strict requirements for passing attestation, and this seems to be enforced in Android 11+ particularly.

    Currently (evidently due to this), device security issues are detected by

    1. Google Pay/Wallet, which may state "You can't pay contactless with this device...(Your phone doesn't meet software standards)" on updating or attempting to add a card despite in-app Contactless setup stating "You're ready to pay contactless with your phone (Your phone meets security requirements)", and
    2. Google Play Store, which may no longer show apps like Netflix w/ Android 11+ (developers can 'exclude devices from their app's distribution based on their device integrity . Device exclusion is based on the latest device integrity verdict that the Play Store app receives from the Play Integrity API') despite in-app settings showing Play Protect 'Device is certified' result.
    I'm guessing that the 'passing' messages based on the old SafetyNet API are likely to realigned soon.

    A workaround that evidently allows Play Integrity API attestation to pass (and solve Wallet / Play Store issues also) has been discovered. It involves spoofing an earlier certified ROM, generally by using MagiskHide Props Config module to change fingerprint prop to one for Android 10 or earlier.

    Undoubtedly other apps will begin to detect broken TEE etc / fail as they migrate or begin integrating the Play Integrity API.

    A 'Universal Play Integrity Fix' will evidently require more understanding / research into how the fingerprint prop is used, and possibly other new behaviours.

    Here's hoping... 🙃 PW
    28
    ok so there is a solution

    get the magisk module riru

    after you get riru get LSPosed

    after you get LSPosed get xprivacylua (in the LSPosed app)

    select play services in the xprivacylua settings IN the LSPosed app

    AND in the xprivacylua app itself after you've restarted.

    clear play service data

    check safetynet in magisk - enjoy?

    I would reboot between each step just to be safe but I know it's necessary to load the xprivacylua module

    s/o to saitama_96 for discovering it or so I'm led to believe
    26
    Some useless statistics:
    My MOD was downloaded over 2k times.
    1,5k from XDA
    800 from GitHub

    I'm glad i made 2000+ people happier :) Thank you!