Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added plugin to read WashCity card balance #683

Merged
merged 5 commits into from
Jan 5, 2024

Conversation

yaba
Copy link
Contributor

@yaba yaba commented Dec 26, 2023

What's new

  • Added NFC plugin to read balance from WashCity (MarkItaly) cards.

Verification

  • applications/main/nfc/application.fam: added washcity plugin
  • New file created: washcity.c on plugins/supportedcards
  • Code was fully based on MetroMoney by Leptoptilos

Checklist (For Reviewer)

  • PR has description of feature/bug
  • Description contains actions to verify feature/bugfix
  • I've built this code, uploaded it to the device and verified feature/bugfix

@yaba yaba requested a review from xMasterX as a code owner December 26, 2023 21:48
"\e#WashCity\nCard number: %s\nBalance: %lu.%02u EUR",
card_number,
balance_eur,
balancecentsi);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean balance_cents?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, fixed that and clang format also. Thanks for bringing it up, probably a typo after build since it was running fine.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, merged on OFW.

@Leptopt1los
Copy link
Member

Hi! Thanks for this PR! We have a question: how widespread is the WashCity system? We found information about only four locations in Florida, USA

@yaba
Copy link
Contributor Author

yaba commented Dec 29, 2023

Hi! Thanks for this PR! We have a question: how widespread is the WashCity system? We found information about only four locations in Florida, USA

Hi, actually, WashCity is only the laundry service itself, but the machine manufacturer is from Italy (https://www.markitaly.com), I believe it might be widespread on Europe under different names. There's also a competitor, Comestero, which provides the same kind of vending machines to car wash services, however, the card structure is different and keys are based on the UID. Currently I cannot disclose the algorithm to generate them.

@Leptopt1los
Copy link
Member

Hi! Thanks for this PR! We have a question: how widespread is the WashCity system? We found information about only four locations in Florida, USA

Hi, actually, WashCity is only the laundry service itself, but the machine manufacturer is from Italy (https://www.markitaly.com), I believe it might be widespread on Europe under different names. There's also a competitor, Comestero, which provides the same kind of vending machines to car wash services, however, the card structure is different and keys are based on the UID. Currently I cannot disclose the algorithm to generate them.

Hmm. Could you find out if these systems are actually found in other locations? if we find at least one more confirmation that such a system is present in another location and (this is important) works on the same principle (the parser works correctly with their cards), then we will gladly accept it into our firmware! Perhaps the discord channels OFW and Unleashed would be a good place to try to gather this information

also, in this case, we will be able to check whether the same keys are used on the card as those used for read()

as for Comestero, it is not necessary to implement the read() function to implement the parser. the parse() function is triggered when opening the info from the dump menu. you can see an example in umarsh.c if you're interested!

@yaba
Copy link
Contributor Author

yaba commented Dec 30, 2023

I'll try to reach MarkItaly to get an overview on their customers. Unfortunately I'm only aware of those laundry shops, WashCity here in Portugal.

Thanks for the tip on Comestero, I'll take a look and see what can be done. If you don't mind asking, is there any sample/documentation on how to write a single byte to Mifare Classic in a specific sector & position?

Thanks

@xMasterX xMasterX merged commit e5738ec into DarkFlippers:dev Jan 5, 2024
@xMasterX
Copy link
Member

xMasterX commented Jan 5, 2024

Hi, @Leptopt1los made some final changes to your code also about this

If you don't mind asking, is there any sample/documentation on how to write a single byte to Mifare Classic in a specific sector & position?

There is no documentation yet, but the code contains many comments, for your case I think you need to make your own function/api for that, i haven't seen such functions in current API that will allow such precise edit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants