Git Product home page Git Product logo

bas-celik's Introduction

Baš Čelik

Go Reference Go Report Card

Baš Čelik je čitač elektronskih ličnih karata, zdravstvenih knjižica i saobraćajnih dozvola. Program je osmišljen kao zamena za zvanične aplikacije poput Čelika. Nažalost, zvanične aplikacije mogu se pokrenuti samo na Windows operativnom sistemu, dok Baš Čelik funkcioniše na tri operativna sistema (Windows/Linux/OSX).

Baš Čelik je besplatan program, sa potpuno otvorenim kodom dostupnim na adresi github.com/ubavic/bas-celik.

Note

Baš Čelik is software for reading smart-card documents issued by the government of Serbia. Supported cards are ID cards, vehicle cards, and medical insurance cards. The application is written completely from scratch in Go and supports Linux, OSX and Windows. The rest of this document and the program interface are in Serbian (for now), but the whole codebase is in English.

Interfejs

Upotreba

Povežite čitač za računar i pokrenite Baš Čelik. Ubacite karticu u čitač. Program će pročitati informacije sa kartice i prikazati ih. Tada možete sačuvati PDF pritiskom na donje desno dugme.

Kreirani PDF dokument izgleda maksimalno približno dokumentu koji se dobija sa zvaničnim aplikacijama.

Podaci o overi zdravstvene knjižice

Podatak o trajanju zdravstvenog osiguranja (overena do), ne zapisuje se na knjižicu prilikom overe. Zvanična RFZO aplikacija preuzima ovaj podatak sa web servisa, i zbog toga je ista funkcionalnost implementirana i u Baš Čeliku. Pritiskom na dugme Ažuriraj, preuzima se podatak o trajanju osiguranja. Pri ovom preuzimanju šalje se LBO broj i broj zdravstvene kartice.

Pokretanje na Linuksu

Baš Čelik zahteva instalirane ccid i opensc/pcscd pakete. Nakon instalacije ovih paketa, neophodno je i pokrenuti pcscd servis:

sudo systemctl start pcscd
sudo systemctl enable pcscd

Pokretanje u komandnoj liniji

Baš Čelik prihvata sledeće opcije:

  • -atr: ATR kôd kartice biće prikazan u konzoli.
  • -help: informacija o opcijama biće prikazana u konzoli.
  • -json PATH: grafički interfejs neće biti pokrenut, a sadržaj dokumenta biće direktno sačuvan u JSON datoteku na PATH lokaciji.
  • -list: lista raspoloživih čitača biće prikazana u konzoli.
  • -pdf PATH: grafički interfejs neće biti pokrenut, a sadržaj dokumenta biće direktno sačuvan u PDF datoteku na PATH lokaciji.
  • -rfzoValidUntil: informacija o trajanju zdravstvenog osiguranja biće preuzeta sa RFZO portala. Ne odnosi se na grafički interfejs niti na ostala dokumenta.
  • -verbose: tokom rada aplikacije detalji o greškama biće prikazani u konzoli.
  • -version: informacija o verziji programa biće prikazana u konzoli.
  • -reader INDEX: postavlja odabrani čitač za čitanje podataka. Parametar INDEX označava prirodan broj koji je naveden u ispisu list komande. Izbor utiče samo na čitanje sa atr, pdf i json opcijama.

U slučaju json i pdf opcija, program ne dodaje ekstenziju na kraj lokacije koju je korisnik naveo.

Pri pokretanju sa atr, json ili pdf opcijom, program očekuje da je kartica smeštena u čitač i neće čekati na ubacivanje kartice kao što je to slučaj sa grafičkim okruženjem.

Pri pokretanju sa atr, help, list ili version opcijama podaci sa kartice neće biti očitani (osim ATR koda u slučaju atr komande). Program će prestati izvršavanje nakon ispisa odgovarajuće informacije.

Komandna linija na Windows-u

Izvršna datoteka za Windows koja je dostupna za preuzimanje, je kompajlirana kao GUI aplikacija. Takve aplikacije ne mogu da ispisuju tekst u terminal u kom su pokrenute. Zbog toga, ako želite da vidite ispis u konzoli, potrebno je da preusmerite izlaz aplikacije. Na primer, u powershell-u:

bas-celik.exe -help | more

Čitači i drajveri

Baš Čelik bi trebalo da funkcioniše sa svim čitačima pametnih kartica koji su trenutno dostupni u prodaji (Gemalto, Hama, Samtec...). Korisnici Windows (7, 8, 10, 11) i macOS operativnih sistema ne moraju da instaliraju ni jedan dodatni program (drajver).

Preuzimanje

Izvršne datoteke poslednje verzije programa možete preuzeti sa Releases stranice.

Za Linux operativni sistem su dostupne verzije sa i bez grafičkog interfejsa. Verzija sa grafičkim interfejsom je dostupna u okviru datoteke bas-celik.linux.amd64.tar.xz. Verzija bez grafičkog interfejsa je dostupna kao izvršna datoteka bas-celik-cli.linux.amd64. Obe verzije prihvataju gore navedene opcije komandne linije.

Izvršne datoteke za macOS

Kako macOS ne dozvoljava (jednostavno) pokretanje izvršnih datoteka koje nisu potpisane sa sertifikatom izdatog od Apple-a, nema mnogo smisla pružati izvršne datoteke za mac. Korisnici Apple uređaja moraju sami instalirati Go (prema uputstvu sa zvaničnog sajta), a zatim kompajlirati Baš Čelik po gore navedenom uputstvu.

Kompilacija

Potrebno je posedovati go kompajler. Na Linuksu je potrebno instalirati i libpcsclite-dev i pakete za Fyne (možda i pkg-config).

Nakon preuzimanja repozitorijuma, dovoljno je pokrenuti

go mod download
go build

Prva kompilacija može potrajati nekoliko minuta (i do deset), jer je neophodno da se preuzmu i kompajliraju sve Golang biblioteke. Sve naredne kompilacije se izvršavaju u nekoliko sekundi.

Kroskompilacija

Uz pomoć fyne-cross programa moguće je na jednom operativnom sistemu iskompajlirati program za sva tri operativna sistema. Ovaj program zahteva Docker na vašem operativnom sistemu.

Planirane nadogradnje

  • Podrška za dokumente iz susednih država (CG, BiH, HR...)
  • Potpisivanje dokumenata sa sertifikatom smeštenim na LK
  • Verifikacija podataka na karticama
  • Opcija promene PIN koda na LK

Poznati problemi (bug-ovi)

Pregled svih poznatih problema je dostupan na Issues stranici.

Unapred sam zahvalan za bilo kakvu povratnu informaciju o problemima. Za prijavljivanje problema, možete otvoriti novi issue ili mi poslati mejl (username celik, domen ubavic.rs).

Eventualni bug u Baš Čelik aplikaciji ne utiče na "sigurnost" vašeg dokumenta. Baš Čelik isključivo čita podatke sa kartice.

Ćirilica i latinica

Program prikazuje i eksportuje podatke onako kako su zapisani na kartici. Ako na nekom dokumentu uočite podatke na oba pisma, u pitanju nije bug već stanje na kartici.

Arhitektura aplikacije

Aplikacija je podeljena na sledeće pakete:

  • document - paket definiše tri tipa IdDocument, MedicalDocument i VehicleDocument koji zadovoljavaju Document interfejs. Ovi tipovi se koriste kroz celu aplikaciju. Uz definicije tipova, implementirane su i metode za eksport struktura u PDF i JSON.
  • card - paket definiše funkcije za komunikaciju sa pametnim karticama i funkcije za parsiranje Document struktura iz TLV i BER datoteka.
  • gui - definicija grafičkog interfejsa uključujući i pooler kartice.
  • localization - skup pomoćnih funkcije da za formatiranje datuma, podršku za različita pisma, itd..
  • internal - skup funkcija koje (za sada) služe samo za pokretanje programa (parsiranje opcija komandne linije, pokretanje grafičkog interfejsa, itd...)

Ostali direktorijumi u okviru projekta:

  • embed i assets - dodatne datoteke. Neke se linkuju u izvršnu verziju prilikom kompilacije.
  • script - dodatne skripte.
  • docs - eksterna dokumentacija

Doprinos

Pre kreiranja issue-a i pull request-ova, pročitati CONTRIBUTING.md.

Slični projekti

Postoje i drugi projekti otvorenog koda koji imaju izvesne sličnosti sa Baš Čelikom:

Licenca

Program i izvorni kôd su objavljeni pod MIT licencom.

Font Liberation je objavljen pod SIL Open Font licencom.

bas-celik's People

Contributors

codelieutenant avatar dusnm avatar lukica00 avatar milemik avatar najdanovicivan avatar pilipovicn avatar ubavic 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  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  avatar  avatar  avatar  avatar  avatar

bas-celik's Issues

SIGSEGV kada nije pokrenut `pcscd.socket`

Kada se pokrene program na računaru bez pcsd servisa:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xa73cee]

goroutine 11 [running]:
github.com/ebfe/scard.(*Context).Release(0xc2a046?)
	/home/runner/go/pkg/mod/github.com/ebfe/[email protected]/scard.go:67 +0xe
github.com/ubavic/bas-celik/gui.pooler()
	/home/runner/work/bas-celik/bas-celik/gui/pooler.go:102 +0x49
created by github.com/ubavic/bas-celik/gui.StartGui in goroutine 1
	/home/runner/work/bas-celik/bas-celik/gui/ui.go:58 +0x4df

A ako se program pokrene grafički, korisnik nema povratnu informaciju da je došlo do greške.

Očekivano ponašanje u tom slučaju bi trebalo da bude kao što je opisano ovde.

Operativni sistem: Arch Linux
Verzija programa: 1.5.0

Aplikacija ne radi

Poštovani, hvala za app (BashChelik-master za C#). Ako može pomoć, meni vaša aplikacija ne radi. Nisam menjao verziju frameworka, nisam radio update NUGET paketa, samo sam postavio BashChelik.ConsoleApp kao startup project. Btw, svaka čast što se uspeli da napravite aplikaciju bez korišćenja C++ wrappera, recimo meni CelikNET sa Elite Security radi i na production i na deployment računarima, ali vaša aplikacija je u C#, pa mi više odgovara. Evo screenshot greške vaše aplikacije iz WinDbgPreview. Unapred zahvalan na pomoći.
ereeyeye

Ne cita nove saobracajne dozvole.

Stare saobracajne cita, a imam 2 vozila od pre mesec dana registrovana i nece da ih procita. Ispravne su jer sam probao sa mupovom aplikacijom citac saobracajne, tamo se vide podaci.

Greška pri konekciji sa čitačem

image

Izbacuje mi grešku, iako imam pcscd koji omogućava komunikaciju sa čitačem, barem radi za onaj jFreeSteel

image

Na koji način on zapravo komunicira? Jel to neka univerzalna biblioteka ili?

Pomesani atributi Gemalto <-> Medical

Pozdrav,
pre svega hvala na izdvojenom vremenu, bas mi je falio citac za linux.

Za moju zdravstvenu knjizicu kada ubacim, ATR je

0x3B, 0xF9, 0x96, 0x00, 0x00, 0x80, 0x31, 0xFE, 0x45, 0x53, 0x43, 0x45, 0x37, 0x20, 0x47, 0x43, 0x4E, 0x33, 0x5E

i to je bas tvoj GEMALTO_ATR_2, a to odlucuje da je rec o licnoj. Iz nekog razloga moja zdravstvena je kao gemalto licna. Ovo naravno pravi gresku citajuci polja kartice, najpre header. Verovatno nisam jedini, pa bi trebalo smisliti drugi nacin diskriminacije licne i zdravstvene. Nisam upoznat sa sadrzajem ovih kartica pa nisam siguran na osnovu kog polja. Ali evo cisto da imas ovo na umu da je tako. Uradio sam mali PR #9 cisto da ne radi SEGV kada dodje do ove zabune sa karticama.

Feature: API upload

Ovo je tiket u kom se predlaze dodavanje nove funkonalnositi. Ideja funkcionalnosti je sledeca

Nakon citanja dokumenta salje se POST request serveru gde se prosleduju podaci iz dokumenta.

"Stara" lična karta - izveštaj za Windows 1.0.0.4 verziju

Samo da prijavim za "staru" (izdata 03.12.2013) ličnu kartu:

  • Ako je program startovan, a LK nije u čitaču, pa se naknadno ubaci:
  1. LK će biti pročitana
  2. Prebivalište i svi podaci o dokumentu nedostaju i na ekranu i u PDF-u (u odnosu na zvanični čitač)
  • Ako se program startuje sa LK u čitaču - pročita sva polja

Kozmetika: u zvaničnom PDF-u stoji "Prebivalište i adresa stana:" a u Baš Čelik "Prebivalište:" :-)

Eksport u JSON na Windows verziji

Na Windows verziji mi sve radi osim eksporta u JSON, shell eksport u PDF radi bez problema, kao i GUI...
Da li je ovo poznat problem ili nešto grešim? Praktično ista je komanda kao za PDF, samo stavim -json umesto -pdf... i ne radi mi, za PDF, rekoh već, radi.

Imam neki workaround pa vadim podatke iz PDF-a sa pdftotext toolom i preparsiram ih u JSON, ali bi bilo dobro i sigurnije da mogu direktno iz Baš Čelika u JSON.

Hvala za projekat, otvorite neki "donate" kanal :)

Zavisnosti za build

Na Debian-u (pa i na Ubuntu), potrebno je da se instalira C kompajler, kao i par development paketa

apt install build-essential pkg-config libpcsclite-dev libgl1-mesa-dev xorg-dev

Feature: Native Messaging

Ovo je tiket u kom se predlaze dodavanje nove funkonalnositi. Ideja funkcionalnosti je sledeca

Dodavanje podrske za Native Messaging kako bi se dokumenti mogli citati direktno iz browsera koji podrzavaju Native Messaging protokol.

Add tests

Mislim da bi bila dobra ideja da se dodaju testovi :) Ja sam rad da contribujem :)

Kako se ovo pokreće?

Instalirao sam GO na ARM Meka preko homebrew-a, pokrenuo

go build main.go

Odradio je posao i šta onda? Kako se pokreće program?

Isto se desilo i na Windowsu.

Грешка приликом читања личне карте за странце

Графички Баш Челик одма улази у циклус "читање-грешка".
CLI верзия каже "Error saving document: reading card: reading card: reading document 0 file: parsing file header: invalid length" па се завршава.
Исти баш челик са истим хардвер читачом ради са картицом здравственог осигурања на истом рачунару (онда проблем није у хардверу).
Исти хардвер читач добро ради са проблематичном картом на другом рачунару со Виндовзом (онда проблем није у карти).
ЛК има на себи сертификате.
ATR је 3bff9400008131804380318065b0850201f3120fff82900079
Издата је у априлу 2023.

Немам држављанске карте, онда не могу да проверим са њом.

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.