2021年5月5日

phthon3讀取健保卡上的資料

有需求記錄姓名和身份證字號,找了一下資料,可以用python3做出來

1.確定電腦和讀卡機是正常的(驅動程式....)

2. 參考資料:https://ithelp.ithome.com.tw/questions/10198968

3.安裝python3 

4.安裝pyscard(https://pypi.org/project/pyscard/)

pip install pyscard

或pip3 install pyscard

5.記錄檔為日期.txt

py程式碼

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import winsound

from smartcard.System import readers

# define the APDUs used in this script
SelectAPDU = [ 0x00, 0xA4, 0x04, 0x00, 0x10, 0xD1, 0x58, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00 ]

ReadProfileAPDU = [ 0x00, 0xca, 0x11, 0x00, 0x02, 0x00, 0x00 ]

# get all the available readers
r = readers()

reader = r[0]

connection = reader.createConnection()
connection.connect()

data, sw1, sw2 = connection.transmit(SelectAPDU)
print ("Select Applet: %02X %02X" % (sw1, sw2))

data, sw1, sw2 = connection.transmit(ReadProfileAPDU)
'''卡片內容
print ("Command: %02X %02X" % (sw1, sw2))
print  ('Card Number : %s' % ''.join(chr(i) for i in data[0:12]))
print  ('Name : %s' % ''.join(chr(i) for i in data[12:18])) # Big5
print  ('ID Number : %s' % ''.join(chr(i) for i in data[32:42]))
print  ('Birthday : %s' % ''.join(chr(i) for i in data[43:49]))
print  ('Sex : %s' % ''.join(chr(i) for i in data[49:50]))
print  ('Card Date : %s' % ''.join(chr(i) for i in data[51:57]))
'''
#身份證字號
uid = '%s' % ''.join(chr(i) for i in data[32:42])

#姓名
name = "{}".format(bytes(data[12:32]).decode("big5"))
#寫入檔案
fo = open("output.txt", "r+")
str = uid +  name + '\n'
# Write a line at the end of the file.
fo.seek(0, 2)
line = fo.write( str )
fo.close()
#發出嗶聲顥示已記錄
winsound.Beep(600,500)
print(uid +  name +'已記錄')

下載我的.py檔https://drive.google.com/file/d/1I8uGrEiec7TJTLSr5uejaFdMZwD7V3lU/view?usp=sharing

編譯完的.exe檔:https://drive.google.com/file/d/1sIiEVUg_70c-hg0Ux2488cg3Qmk2tjsg/view?usp=sharing


2021年3月11日

epc更新軟體

 epc是明貴校長維護的軟體集合,有人問裡面的chrome firefox如何更新呢?做法如下







2021年3月4日

影片自動翻譯字幕

 有一個軟體叫pyTranscriber可以自動把影片中的語音轉成文字,還不錯用,記錄一下。

 github:https://github.com/raryelcostasouza/pyTranscriber

 下載:https://github.com/raryelcostasouza/pyTranscriber/releases

在linux下可以用portable版本,不過要用最高權限執行。


大約一下字就完成了。

翻譯完還是需要校對一下有無翻譯錯誤的地方,有問題自行修正,有了他減少95%的工作了。

它會輸出二個檔案,一個是txt檔,一個是srt檔。

2020年11月24日

edu2020 install drbl

 1.設定固定ip

sudo -s

cd /etc/netplan

vim 01-network-manager-all.yaml 

增加內容

ethernets:
          enp0s3:
                  dhcp4: no
                  dhcp6: no
                  addresses: [192.168.43.152/24]
                  gateway4: 192.168.43.1
                  nameservers:
                        addresses: [168.95.1.1,8.8.8.8 ]

sudo netplan apply

臨時增加一張虛擬網卡

ifconfig  enp0s3:0 192.168.10.1 up 

sudo vim /etc/re.local

加入下列內容

#!/bin/bash

ifconfig enp0s3:0 192.168.10.1 up

exit 0

sudo chmod  +x /etc/rc.local


2.增加來源

sudo vim /etc/apt/sources.list

加入下列

deb http://free.nchc.org.tw/ubuntu focal main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

加key

wget -q http://drbl.nchc.org.tw/GPG-KEY-DRBL -O- | sudo apt-key add -

3.安裝drbl

sudo apt update

sudo apt install drbl

4.設定server

drblsrv -i

*****************************************************.
提示! 當有yes/no選項的時候,預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候,程式使用的值就是 "N"。如果你不確認選用那個好的時候,直接按"Enter"鍵是一個保險的方式。
*****************************************************.
*****************************************************.
在 Debian Linux 上安裝 DRBL 環境...
*****************************************************.
你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (Debian, Ubuntu, RedHat Linux, Fedora Core, Mandriva, CentOS與OpenSuSE等)到本身的硬碟中? ///注意/// 這個動作會下載一些檔案(全部的大小可能超過100 MB),所以有可能會花不少時間。假如你的用戶端電腦有硬碟,而你又有可能會需要安裝作業系統,建議選擇Y。假如你回答no,之後你仍舊可以使用drbl-netinstall來安裝這些檔案。
[y/N] Enter

*****************************************************.
This GNU/Linux distribution uses one kernel to support SMP and non-SMP arch.
*****************************************************.
你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?
如果你不清楚什麼序列終端機的話,就回答"N",否則有可能造成用戶端電腦螢幕無法顯示!
[y/N] Enter

The CPU arch option for your clients: 2
您選用與伺服器同等級的 CPU 最佳化.
*****************************************************.
清除apt的快取檔案...
已有:1 http://free.nchc.org.tw/ubuntu focal InRelease
略過:2 http://free.nchc.org.tw/drbl-core drbl InRelease               
已有:3 http://free.nchc.org.tw/drbl-core drbl Release                 
已有:4 http://tw.archive.ubuntu.com/ubuntu focal InRelease                                                                                   
已有:5 http://tw.archive.ubuntu.com/ubuntu focal-updates InRelease                                                                           
已有:6 http://tw.archive.ubuntu.com/ubuntu focal-backports InRelease                  
已有:8 http://security.ubuntu.com/ubuntu focal-security InRelease                                                
已有:9 http://ppa.launchpad.net/linuxuprising/shutter/ubuntu focal InRelease
已有:10 http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu focal InRelease
正在讀取套件清單... 完成                           
*****************************************************.
你是否要升級你的作業系統?
[y/N]  Enter

.

.

.

執行 mime-support (3.64ubuntu1) 的觸發程式……
執行 initramfs-tools (0.136ubuntu6.3) 的觸發程式……
update-initramfs: Generating /boot/initrd.img-5.4.0-48-generic
執行 hicolor-icon-theme (0.17-2) 的觸發程式……
執行 gnome-menus (3.36.0-1ubuntu1) 的觸發程式……
執行 libc-bin (2.31-0ubuntu9) 的觸發程式……
執行 ufw (0.36-6) 的觸發程式……
執行 systemd (245.4-4ubuntu3.2) 的觸發程式……
執行 man-db (2.9.1-1) 的觸發程式……
*****************************************************.
*****************************************************.
如果找到新版的程式,嘗試升級某些需要的程式...
*****************************************************.
在 ayo 資料庫中尋找最新的  kernel ...
The kernel image in Ubuntu 20.04 "uses generic" for i686/amd64 CPU.
在 ayo 資料庫中,最新的核心是 linux-image-5.4.0-48-generic
有兩個可用的核心給用戶端電腦用,你要選擇哪一個?
[1]: kernel 5.4.0-47-generic x86_64 (來自於這台DRBL伺服器)
[2]: linux-image-5.4.0-48-generic (來自於apt的儲藏庫)
[1] Enter

.

.

.

產生用戶端PXE與Etherboot網路開機用的檔案,這可能需要幾分鐘...
用戶端電腦使用的最新核心是 5.4.0-47-generic
Running mknic-nbi --kernel 5.4.0-47-generic --all --no-modules
Will client check DHCP server name is "drbl" or not: yes
The maximum times to try to get IP address for a client: 5
The pause time after network card is up: 0
The timeout to wait for network card linked (Unit: 0.1 secs): 70
The NFS protocol for DRBL system: nfs3
Setting port for udhcpc request to default...
Using the kernel modules from /tftpboot/node_root//lib/modules...
The selected kernel for DRBL clients is: 5.4.0-47-generic
Creating the network boot initrd for PXE clients by: mkpxeinitrd-net -k 5.4.0-47-generic    -nf
Use kernel modules from /tftpboot/node_root//lib/modules/5.4.0-47-generic.
/tftpboot/node_root//lib/modules/../../boot/config-5.4.0-47-generic is found but either CRAMFS or EXT2 filesystem is NOT builtin in the kernel. We will use initramfs.
Trying to include network card firmwares if they exist in /tftpboot/node_root//lib/firmware/...
Calling hook udev...
Creating the initRAMFS image...
Initrd, assign ramdisk_size (97017) and ramdisk_block (1024) in /tftpboot/nbi_img/pxelinux.cfg/default.
Finished!
完成!
*****************************************************.
完成!

5.設定環境

sudo drblpush -i
*****************************************************
提示! 當有yes/no選項的時候,預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候,程式使用的值就是 "N"。如果你不確認選用那個好的時候,直接按"Enter"鍵是一個保險的方式。
******************************************************
正在搜尋DRBL伺服器中已經安裝的相關程式...這個可能需要幾分鐘...
完成尋找DRBL伺服器所需的相關程式.
******************************************************
------------------------------------------------------
這是一個交談模式,在設定DRBL環境的過程中,您必須提供相關資料
------------------------------------------------------
------------------------------------------------------
請輸入網域名稱(DNS domain),例如drbl.sf.net:
[drbl.org]

您設定的網域名稱(DOMAIN)是 drbl.org
------------------------------------------------------
請輸入NIS/YP網域名稱:
[penguinzilla]

您設定的網域名稱(DOMAIN)是 penguinzilla
------------------------------------------------------
請輸入用戶端電腦名稱的前置字元:
這個前置字元是用來搭配流水編號自動產生用戶端電腦名稱,如果你有部份或是全部機器不想使用這個自動產生的電腦名稱,想要自己指定用戶端電腦名稱,現在可以先按Ctrl-C中斷此程式,編輯/etc/drbl/client-ip-hostname後,再執行此程式。
[teacher-VirtualBox-]

您設定的用戶端電腦名稱的前置字元是 teacher-VirtualBox-
------------------------------------------------------
enp0s3: IP address 192.168.43.152, netmask 255.255.255.0
在你的系統上找到已經設定好的乙太網路埠有: enp0s3
------------------------------------------------------
沒有找到這台伺服器的公開IP位址,
哪個網路連接埠是這台伺服器用來連接到外部網際網路,而不是給DRBL環境使用的?
這台伺服器有的乙太網路埠:
enp0s3 (192.168.43.152),
[enp0s3]

你所選擇連接到網際網路的乙太網路埠是: enp0s3
///警告/// 在這台機器上只有找到一張有設定好的網路卡。
你確認要繼續執行?
[y/N] y

在這張網卡上有發現DHCP服務: enp0s3
你是否要使用區域網路中>現有的DHCP服務? 該DHCP伺服器的IP位址是: 192.168.43.1
如果選擇是,我們將使用從現有的DHCP服務取得的IP位址。若選擇否,我們將在此機器另外跑一個DHCP服務,不過此服務可能會與現有的DHCP服務相衝突。因此建議選擇使用現有的DHCP服務。
//注意// 若選擇是,你必須確認現有的DHCP服務提供足夠多的IP位址給用戶端機器使用。此外,這個機制有其風險,因為在此區域網域的PXE或者uEFI網路開機用戶端都會進入DRBL或者Clonezilla模式。請確認這是你要的模式。
[Y/n]

Use proxy DHCP. Adding virtual network drbl0...
This virtual network device was created successfully: drbl0
3: drbl0@enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 02:77:f1:a8:60:5f brd ff:ff:ff:ff:ff:ff
    inet6 fe80::77:f1ff:fea8:605f/64 scope link tentative
       valid_lft forever preferred_lft forever
Detecting DHCP services... 30 29 28 27 26 25 24 23
Found DHCP service. Ethernet card, DHCP server, Available DHCP client: drbl0, 192.168.43.1, 192.168.43.14
******************************************************
繼續...
******************************************************
Hostmin: 192.168.43.1
******************************************************
繼續...用戶端電腦會採用非固定IP!
******************************************************
這個網域的用戶端電腦中,起始的IP 4組數字中,最後一組數字的起始值是(也就是IP a.b.c.d的d的起始值)? 這是針對連接到DRBL伺服器網路連接埠 drbl0.
[1]
******************************************************
有多少台DRBL用戶端的電腦(也就是給學生使用的電腦)連接到DRBL伺服器網路連接埠 drbl0 ?
請輸入數字:
[12]

******************************************************
我們將設定這些用戶端電腦的IP為,這是針對連接到DRBL伺服器網路連接埠 drbl0 為: 192.168.43.1 - 192.168.43.12
接受 ? [Y/n]

*****************************************************
繼續...
******************************************************
你的DRBL環境配置:
******************************************************
          NIC    NIC IP                    Clients
+-----------------------------+
|         DRBL SERVER         |
|                             |
|    +-- [enp0s3] 192.168.43.152 +- to WAN
|                             |
|    +-- [drbl0] 192.168.43.14 +- to clients group drbl0 [ 12 clients, their IP
|                             |            from 192.168.43.1 - 192.168.43.12]
+-----------------------------+
******************************************************
Total clients: 12
******************************************************
按"Enter"鍵來繼續...

******************************************************
------------------------------------------------------
本系統中,有3種模式可以提供無碟的Linux服務給用戶端使用:
[0] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).
[1] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中,DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請注意!在這個模式中,(a)用戶端電腦的記憶體建議至少要256MB以上,(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外,如果你有修改過任何範本機器的設定檔(也就是位於/tftpboot/nodes下的設定檔),你要再執行drbl-gen-ssi-files來產生新的tarball範本檔於/tftpboot/node_root/drbl_ssi/中,(c) 如果你要針對某些用戶端設定一些特別的檔案,可以參考/tftpboot/node_root/drbl_ssi/clients/00_README。
[2] 不要提供無碟Linux服務給用戶端使用.
你要選用哪一個模式?
[0] 2

不要提供無碟Linux服務給用戶端使用.
******************************************************
------------------------------------------------------
本系統中,Clonezilla再生龍有4個模式可以選用:
[0] 完全模式(Full clonezilla mode),每個用戶端都有自己的/etc與/var (基於NFS).
[1] 再生龍盒模式(Clonezilla box mode), 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中,Clonezilla伺服器的負載與所需要的硬碟空間會少一些。但是請注意!這個模式中,用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!
[2] 我不要使用再生龍.
[3] 使用Clonezilla live當作用戶端做clonezilla工作時候的作業系統.
你要選用哪一個模式?
[0]
你選用完全模式(Full clonezilla mode)!
******************************************************
******************************************************
用戶端執行Clonezilla的工作時,選用的CPU架構是: i386
------------------------------------------------------
使用再生龍的時候,你要把印象檔存在此台機器的那個目錄中(請用絕對路徑,並且不要指定在/mnt/, /media/ 或是/tmp/下)?
[/home/partimag]
Directory for Clonezilla saved images: /home/partimag
******************************************************
用戶端開機後為文字模式.
******************************************************
繼續...
------------------------------------------------------
基於安全考量, 你是否要為用戶端電腦設定開機密碼?
[y/N]
繼續...
------------------------------------------------------
你是否要在用戶端電腦開機的時候讓使用者可以選擇所要的系統?
[Y/n]
用戶端電腦開機,出現提示符號時要等待多少個0.1秒?
[70] 50
繼續...
------------------------------------------------------
------------------------------------------------------
你是否要在用戶端電腦開機的時候使用圖形背景的選單?
注意!如果你的用戶端使用圖形背景無法正常開機,你可以使用"switch-pxe-bg-mode -m text"來切換成文字模式的背景.
[y/N]
Use text PXE Linux menu for the client.
------------------------------------------------------
繼續...
------------------------------------------------------
------------------------------------------------------
你是否要讓DRBL伺服器也能提供NAT服務(也就是一般俗稱的IP分享器功能)? 如果不要的話,DRBL用戶端電腦將無法連到網際網路.
[Y/n]
繼續...
------------------------------------------------------
------------------------------------------------------
你是否要保留以前DRBL用戶端電腦的設定?
[Y/n]
如果原來DRBL用戶端電腦的設定存在的話,將會予以保留.
******************************************************
******************************************************
DRBL伺服器目前使用的核心支援 NFS over TCP!
【注意】如果你改變DRBL伺服器目前使用的核心版本,並且不確認那個核心是否支援NFS over UDP 或是 TCP,你最好重新執行"drblpush -i"以免用戶端電腦開不了機!
按"Enter"鍵來繼續...

------------------------------------------------------
******************************************************
The calculated NETWORK for drbl0 is 192.168.43.0.
******************************************************
******************************************************
現在準備部署這些檔案到系統中!
你要繼續執行嗎?
警告!如果你繼續執行,你的防火牆規則將會被改掉!
原來的規則將會被備份成iptables.drblsave於系統的設定目錄中(/etc/sysconfig或是/etc/default).
[Y/n]
******************************************************
開始進行...
------------------------------------------------------
.

.

.


完成。


2020年11月7日

scratch_link for ubutnu20.04

 scratch_link在scratch3的官網上,明白寫著只支援win mac chromebook....,linux一直找不到解決方案。

在網路上看到好像pyscrlink可以支援linux,但github(https://github.com/kawasaki/pyscrlink)上明白也寫著不支援linux microbit,真的不好阿。研究了一下好像成功了。做法如下,記錄一下。

安裝記錄

1.microbit要下載hex。下載後解壓縮,把.hex拷貝到microbit磁碟機中,重開micro:bit,這時候led會顯示pupop。

2.ubuntu20.04安裝pyscrlink:

$sudo apt install bluez libbluetooth-dev libnss3-tools libcap2-bin  libglib2.0-dev git

$sudo apt-get install python3-pip

$sudo pip3 install bluepy

$sudo pip3 install pyscrlink

$bluepy_helper_cap

3.下載我改寫過的pyscrlink原始檔

$git clone https://github.com/estea8968/pyscrlink.git

$cd pyscrlink

$./release.sh build

$sudo python3 setup.py  install

安裝完成後就有scratch_link指令可以使用

使用方式

microbit接上電源,開啟ubuntu終端機,輸入scratch_link

打開scratch3網頁,按左下角+


選micro:bit擴充積木


選擇BBC microbit[pupop]按下連線

連線後,回到編輯器

就可以正常使用擴充積木了。