Giter VIP home page Giter VIP logo

pincredible's People

Contributors

cyb3rko avatar poussinou 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  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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

pincredible's Issues

Import / Export functionality

Function to be able to export an password encrypted PIN vault, which then can be reimported for example on a new device.

Pattern exported as PDF

As title tells.

If interested, give it a thumbs up ๐Ÿ‘ and write a comment if you want

Have different patterns

Having an option to choose different patterns like:

  • random colors (currently used)
  • puzzle games (like sudoku grid, kenken, etc)
  • alternating checkboxes (seen in chess/checkers)
  • random & checkboxes

Aim: blend in, & camouflage.

#22 will help in remembering with such otherwise uniform patterns

If interested, give it a thumbs up +1 and write a comment if you want

Generate new fill

Sometimes I noticed too much similar numbers close the cells.

Might you add "generate a new filling"?

Cannot export after updating to newer version

After updating to latest version (0.4.1), tried to export and I faced this error message

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Caused by: java.lang.reflect.InvocationTargetException
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	... 1 more
Caused by: java.io.InvalidClassException: com.cyb3rko.pincredible.data.PinTable; local class incompatible: stream classdesc serialVersionUID = -1884388637003576280, local class serialVersionUID = 5997637778385570065
	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:624)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1713)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1594)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1872)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1412)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:427)
	at com.cyb3rko.pincredible.utils.ObjectSerializer.deserialize(Unknown Source:15)
	at com.cyb3rko.pincredible.utils.BackupHandler.runExport(SourceFile:151)
	at com.cyb3rko.pincredible.utils.BackupHandler.access$runExport(Unknown Source:0)
	at com.cyb3rko.pincredible.utils.BackupHandler$runBackup$1.invoke(Unknown Source:81)
	at com.cyb3rko.pincredible.utils.BackupHandler$runBackup$1.invoke(Unknown Source:6)
	at com.cyb3rko.pincredible.modals.PasswordDialog.show$lambda$1$lambda$0(Unknown Source:40)
	at com.cyb3rko.pincredible.modals.PasswordDialog.b(Unknown Source:0)
	at m1.e.onClick(Unknown Source:6)
	at android.view.View.performClick(View.java:7870)
	at android.widget.TextView.performClick(TextView.java:14970)
	at com.google.android.material.button.MaterialButton.performClick(SourceFile:10)
	at android.view.View.performClickInternal(View.java:7839)
	at android.view.View.access$3600(View.java:886)
	at android.view.View$PerformClick.run(View.java:29363)
	at android.os.Handler.handleCallback(Handler.java:883)
	at android.os.Handler.dispatchMessage(Handler.java:100)
	at android.os.Looper.loop(Looper.java:237)
	at android.app.ActivityThread.main(ActivityThread.java:7948)
	... 3 more

Application usage

I still do not understand how this application helps me remember pin codes?

Have different frames (coordinates etc.)

Having different frame options like:

  • no frame (current)
  • numbered coordinates (suggested default)
  • mixed coordinates (like chess)

Additionally:

  • puzzle frames (like from games like magic square or the like)

Orig8nal description:

Showing coordinates/cell ids on borders (similar to chess board or spreadsheets) by default can additionally help in remembering passwords in case of ...

a new pattern for each single PIN ...
- @ cyb3rko at #16 (comment)

There can be 2 options:

  • Combination (Letters & Numbers)
  • Only Numbers

Oh, and to save your effort :\wink:

If interested, give it a thumbs up ๐Ÿ‘ and write a comment if you want

Crypto Error

android.security.keystore.KeyNotYetValidException: Key not yet valid
	at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1327)
	at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1397)
	at android.security.keystore.KeyStoreCryptoOperationUtils.getInvalidKeyExceptionForInit(KeyStoreCryptoOperationUtils.java:54)
	at android.security.keystore.KeyStoreCryptoOperationUtils.getExceptionForCipherInit(KeyStoreCryptoOperationUtils.java:89)
	at android.security.keystore.AndroidKeyStoreCipherSpiBase.ensureKeystoreOperationInitialized(AndroidKeyStoreCipherSpiBase.java:265)
	at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineInit(AndroidKeyStoreCipherSpiBase.java:148)
	at javax.crypto.Cipher.tryTransformWithProvider(Cipher.java:2980)
	at javax.crypto.Cipher.tryCombinations(Cipher.java:2891)
	at javax.crypto.Cipher$SpiAndProviderUpdater.updateAndGetSpiAndProvider(Cipher.java:2796)
	at javax.crypto.Cipher.chooseProvider(Cipher.java:773)
	at javax.crypto.Cipher.init(Cipher.java:1288)
	at javax.crypto.Cipher.init(Cipher.java:1223)
	at com.cyb3rko.pincredible.crypto.CryptoManager.getDecryptCipherForIv(Unknown Source:43)
	at com.cyb3rko.pincredible.crypto.CryptoManager.doDecrypt(SourceFile:47)
	at com.cyb3rko.pincredible.crypto.CryptoManager.decrypt(Unknown Source:11)
	at com.cyb3rko.pincredible.fragments.HomeFragment.retrievePins(Unknown Source:25)
	at com.cyb3rko.pincredible.fragments.HomeFragment.access$retrievePins(Unknown Source:0)
	at com.cyb3rko.pincredible.fragments.HomeFragment$readAndShowPins$1.invokeSuspend(SourceFile:35)
	at x2.a.resumeWith(Unknown Source:8)
	at o3.z.run(Unknown Source:102)
	at kotlinx.coroutines.internal.d.run(Unknown Source:11)
	at kotlinx.coroutines.scheduling.j.run(Unknown Source:2)
	at kotlinx.coroutines.scheduling.a$a.run(SourceFile:79)
	Suppressed: o3.x: [y0{Cancelling}@7261c7a, Dispatchers.IO]

Discovering a pin using logic

I am not sure if it is useful. My idea to find a key scheme is around this puzzle concept.
Of course the hint numbers is a .bin file that only owner has and apply to table in order to solve the math puzzle to get pin/password.

Any idea?

https://sumplete.com

If interested, give it a thumbs up ๐Ÿ‘ and write a comment if you want

FileNotFoundException on first use of 0.7.0

Release from F-Droid running on Android 13.

Steps to reproduce (update: it seems to occur upon hitting Back after deleting the last entered PIN, likely because Back tries to send you right there, instead of leaving the app, which is possiblt not the most desireable behavior in the first place):

  1. Open the app for the first time after installing it
  2. Generate cells, input a new PIN, genete numbers
  3. Save it with a name
  4. Delete the entry you just saved
  5. Hit Back

After this, I get the following error:

java.io.FileNotFoundException: /data/user/0/com.cyb3rko.pincredible/files/p391c30541690b2a65a2d63485: open failed: ENOENT (No such file or directory)
	at libcore.io.IoBridge.open(IoBridge.java:574)
	at java.io.FileInputStream.<init>(FileInputStream.java:160)
	at mh.c(Unknown Source:2)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.a0(SourceFile:28)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.c0(SourceFile:71)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$onViewCreated$1.h(SourceFile:31)
	at s9.b(SourceFile:9)
	at e8.r1(SourceFile:179)
	at e8.R1(SourceFile:12)
	at e8.H0(SourceFile:129)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.M(SourceFile:118)
	at androidx.fragment.app.a.f(SourceFile:255)
	at androidx.fragment.app.a.k(SourceFile:146)
	at hr.A(SourceFile:134)
	at hr.W(SourceFile:92)
	at hr.y(SourceFile:74)
	at ui.run(SourceFile:37)
	at android.os.Handler.handleCallback(Handler.java:942)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7918)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
	Suppressed: nj: [de0{Cancelling}@f0a919f, Dispatchers.Main.immediate]
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
	at libcore.io.Linux.open(Native Method)
	at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274)
	at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
	at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7804)
	at libcore.io.IoBridge.open(IoBridge.java:560)
	... 24 more

Meta: Casual topic `refac` vs `rfct`

Hi!

kudos for adhering to conventional commits since v0.5. ur changelogs look awesome

One extremely small thing i thought to bring in your notice is that:

  • i was initially excited on reading topic name rfct (and also enh)
  • 4 letter saving w.r.t refactor
  • but as i thought more about it, it's may not be quite clear to peers who are new to git or to software development in general
  • it is not obvious what it might stand for, and it's not very speakable either
  • what more, it's not even a search keyword: i tried searching for the following. but none of these yield anything about refactor
    "rfct", "rfct git", "rfct commit message"

while trying to think of different combinations of omissions,
i stumbled upon the obvious one: refac

  • plain and simple, easy to speak,
  • costs 5 letters (same as chore, style) i.e. only one letter more than rfct
  • direct abbreviation of the complete word refactor, hence:
    • consistent with other commit topics: feature, performance, enhancement
    • already gives away what it might stand for
    • shows autocomplete suggestions in search box, and
  • even when searched directly i.e. without using autocomplete suggestions, the results page contains at least one to three related results....

ecosia search: refac commit | duckduckgo search: refac commit

ecosia ddg

So what?

umh, nothing much... it's entirely upto you.
as i said, i just wanted to discuss this with you - not necessarily aimed at any particular outcome...

it it makes sense to you, then you may choose to use refac in future;
but downside to it can be that if doing anything programmatic using commit messages from these past rfct ones - u'll have to consider for both rfct and refac which might be error prone.

but this use-case can be a corner case in and on itself...

what are your thoughts on this?? ๐Ÿ˜ƒ

Improve save dialog

I noticed the following issues:

  • closes on rotation
  • does not respect the character limit
  • does not show an error message on reaching the character limit

Use Argon2d instead SHA2 as key derivation function

Hello,

First of all, thank you for developing PINcredible which look a great project.

I quickly read the code, in particular the import/export function.
As far as I can understand, the password typed by the user is hashed by SHA2 function and the hash is used as AES key to encrypt serialized data. Unfortunately modern GPUs can do billion SHA2 hash per second.

In my opinion, a good improvement could be to use Argon2d function instead of SHA2, which will make dictionary attacks harder on exported file. Argon2d is build to be hard to crack even if user password have poor entropy and it is very efficient against GPUs usage.

Links :

Might you developing a base 36 version?

It will be interesting if I might print on paper (from a previously generated pdf file) a vault password to bring with me during a trip or to safely store at home.

If a ************'s police or any aggressive entity find it, it can only read numbers and characters without any sense.

0 ~ 9
A ~ Z (uppercase)

The app crashes while opening a vault

Here's the message shown after opening a vault. But, opening other vault was normal. Not for this one.

P.S. You don't regenerate and refill too much or you will face app crash.

android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
	at android.content.res.ResourcesImpl.getValueForDensity(ResourcesImpl.java:259)
	at android.content.res.Resources.getDrawableForDensity(Resources.java:920)
	at android.content.res.Resources.getDrawable(Resources.java:860)
	at b0.f$a.a(Unknown Source:0)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$colorTableView$1.invoke(SourceFile:71)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$colorTableView$1.invoke(Unknown Source:14)
	at com.cyb3rko.pincredible.utils.UtilsKt.iterate(Unknown Source:26)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.colorTableView(Unknown Source:28)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.access$colorTableView(Unknown Source:0)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$loadDataIntoTable$2.invokeSuspend(Unknown Source:16)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$loadDataIntoTable$2.invoke(Unknown Source:8)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$loadDataIntoTable$2.invoke(Unknown Source:4)
	at a1.a.h0(SourceFile:4)
	at a1.a.t0(SourceFile:86)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.loadDataIntoTable(SourceFile:84)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.access$loadDataIntoTable(Unknown Source:0)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment$onViewCreated$1.invokeSuspend(Unknown Source:28)
	at x2.a.resumeWith(Unknown Source:8)
	at a1.a.X(SourceFile:168)
	at a1.a.L(SourceFile:134)
	at com.cyb3rko.pincredible.fragments.PinViewerFragment.onViewCreated(Unknown Source:68)
	at androidx.fragment.app.Fragment.performViewCreated(SourceFile:5)
	at androidx.fragment.app.h0.e(SourceFile:250)
	at androidx.fragment.app.h0.j(SourceFile:198)
	at androidx.fragment.app.b0.A(SourceFile:979)
	at androidx.fragment.app.b0.U(Unknown Source:91)
	at androidx.fragment.app.b0.y(SourceFile:74)
	at androidx.fragment.app.b0$f.run(Unknown Source:3)
	at android.os.Handler.handleCallback(Handler.java:883)
	at android.os.Handler.dispatchMessage(Handler.java:100)
	at android.os.Looper.loop(Looper.java:237)
	at android.app.ActivityThread.main(ActivityThread.java:7948)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
	Suppressed: n3.x: [y0{Cancelling}@b38a91f, Dispatchers.Main.immediate]

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.