Weil Jimmer's BlogWeil Jimmer's Blog


RFID MIFARE卡 修改 UID 進入門禁系統
No Comments

發布:
更新:2017-11-03 23:48:45

0x00 前言

最近會想寫這篇文章主要是在網路上無意間看到了RFID相關裝置,突然萌生很久以前一直想玩的事情,於是乎,就打算來實作門禁卡的複製。再加上好久沒寫文章,現在我也懶得管是不是技術成分很重才寫,以後文章我大概也是這樣,寫得很淺,除非我研究了什麼很困難的東西。

其次,真心很感謝 Joe Jimmy 的裝置贊助,不然我大概也不會去做這個實驗,至少要等到以後購買裝備時才會做起。

0x01 目的

為了通過感應 MIFARE卡 的門禁系統,因此需要複製有效的密碼卡而進入該門。

0x02 原理

目前大部分學校門禁系統都採用 13.56 MHz 頻率的 RFID 感應卡,且學生證普遍都是和悠遊卡公司合作的學生證,基本上都是有 KeyA 和 KeyB 和 控制位元保護的。因此門禁系統想用學生證刷過,"應該是"只能採用識別 UID 的方式來驗證使用者的身分,進而決定是否開放使用者進入。如果是另外發放密碼卡,則可能該密碼卡有經過加密,驗證使用者可能不是驗證 UID,若如此,這篇文章就不適用於這種驗證方法。本篇文章僅針對 UID 部分的驗證做出複製卡 (Clone Card)。

0x03 配備

  1. Arduino Mega 2560
  2. MFRC522
  3. 數張 可修改 UID 的 S50 空白卡
  4. 蜂鳴器(非必須,覺得有聲音比較好。)

0x04 結果

以下是我寫卡UID的程式碼是參考 這篇文章 寫的,稍作修改,lib 也是採用同篇 GitHub 文章。

#include <SPI.h>
#include <MFRC522.h>
#include <MFRC522Hack.h>

constexpr uint8_t RST_PIN = 8;
constexpr uint8_t SS_PIN = 9;

MFRC522 mfrc522(SS_PIN, RST_PIN);
MFRC522Hack mfrc522Hack(&mfrc522);

byte newUid[] = {0xDE, 0xAD, 0xBE, 0xEF}; //預設UID
bool write_enable = false;
int wait_sec = 0;

MFRC522::MIFARE_Key key;

void setup() {
  Serial.begin(9600);
  while (!Serial);
  SPI.begin();
  mfrc522.PCD_Init();
  Serial.println(F("Warning: this example overwrites the UID of your UID changeable card, use with care!"));
  
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
}

void loop() {

  if(wait_sec>=0 && write_enable){
    wait_sec=wait_sec-1;
    delay(1000);
    if(wait_sec<2){
      tone(5, 466, 125);
    }
    if(wait_sec<=0){
      write_enable=false;
    }
  }
  
  // Look for new cards, and select one if present
  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    delay(50);
    return;
  }

  if(!write_enable){
    byte *id = mfrc522.uid.uidByte;
    byte idSize = mfrc522.uid.size;
    Serial.print("UID Size: ");
    Serial.println(idSize);
    if(idSize!=4){
      Serial.println(F("New UID is not 4 byte!"));
      return;
    }
    Serial.println(F("New UID set!"));
 
    for (byte i = 0; i < idSize; i++) {
      Serial.print("id[");
      Serial.print(i);
      Serial.print("]: ");
      newUid[i]=id[i];
      Serial.println(id[i], HEX);
    }
    Serial.println();
    mfrc522.PICC_HaltA();
    write_enable=true;
    wait_sec=10;
    tone(5, 740, 500);
    delay(50);
    return;
  }
  
  // Dump UID
  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  } 
  Serial.println();
  
  // Set new UID
  if ( mfrc522Hack.MIFARE_SetUid(newUid, (byte)4, true) ) {
    Serial.println(F("Wrote new UID to card."));
  }
  
  // Halt PICC and re-select it so DumpToSerial doesn't get confused
  mfrc522.PICC_HaltA();
  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    return;
  }
  
  // Dump the new memory contents
  Serial.println(F("New UID and contents:"));
  mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
  tone(5, 740, 250);
  delay(500);
  tone(5, 740, 250);
  write_enable = false;
  delay(2000);
}

以上程式碼之功能是將要被複製的卡貼近 RC522模組,然後再將要被寫入UID的卡貼近,寫入動作結束時會B兩聲,此刻再去檢查Output的值看看有沒有寫入成功。我目前的設定是第二張卡超過10秒就不寫入了,不是無限等待,要再把第一張靠近,在10秒內放入第二張卡。

學會這個小伎倆,往後只要撿到別人的學生證就有機會可以複製對方卡的資訊,之後就可以直接進入別人的宿舍。或者是有設門禁卡的公寓、公司、飯店…等場所,就可以多備份幾把鑰匙卡。紀錄UID也未必要使用模組,有NFC功能的手機就可以讀取資訊,甚至是寫入卡片資料或模擬 UID。

再次提醒,目前複製卡的成果僅次於 UID 的讀寫,如果門禁系統採用非 UID 認證,而是使用 KeyA 或 KeyB 及 控制位元,那就可能必須破解其卡片密鑰才可以存取特定資料,否則就無法輕易的複製卡片資料。

以上是寫入卡片成功的示意圖片。

五張特製可修改 UID 的 S50 卡都被修改為相同的 UID。

這裡文章就差不多到結尾了,我想先說明幾件需要注意的事。

首先,空白卡不是所有卡片都可以修改 S0B0 (Sector 0 Block 0) 區塊的製造商資訊(這裡也是 卡號UID 的所在之處),有很多卡片都是直接燒死的,要嘛是 WriteOnce,要嘛就直接不給寫。要購買卡片時要先注意那張卡片到底可不可以修改,一般正常S50標準卡都是不可寫的,UID不給修改。

其次就是頻率一定要對得到。卡片也有頻率的,隨便亂買門禁空白卡,可能會買到 125KHz 的低頻卡,那就不合目前的模組的頻率,也比較少見。目前悠遊卡、一卡通普遍都是採用 13.56 MHz 的卡片。

最後,卡片也是大有學問的,每種卡都有使用說明書 DataSheet,扇區的數量那些都不一定,而且UID不僅僅是4個Byte,也許是7個Byte,甚至是10個。至於前面S0B0區呢,配置也是有一定規章的,這篇文章我就不講那麼詳細了。反正沒有要到完全複製卡的程度,講那麼多卡區的沒什麼意思。

差不多就這樣,日後想到新的再補充。

By Weil Jimmer


This entry was posted in Arduino, C, General, Experience, Privacy By Weil Jimmer.

本站搬遷伺服器
No Comments

發布:
更新:2017-08-30 15:26:15

本站即刻起,將於未來不定時開始站點搬遷作業。搬到日本機房。屆時,將會有數小時下線,甚至幾天的DNS解析錯誤。此為正常現象。

※更新:本站已於 2017/08/30 12:20 (GMT+8) 搬遷完畢。


This entry was posted in Announcement By Weil Jimmer.

Grub 加入 VeraCrypt 開機選單 多系統
No Comments

發布:
更新:2017-08-14 21:08:02

好久沒發文了,今天寫篇沒有程度的文章做個小筆記。

最近和同學聊天,正好扯到了加密硬碟,突然想到我自己的電腦 Win10 也是屬於未加密的一類,所以乾脆就用 VeraCrypt加密掉好了,可惜卻出現一個問題就是開機選單只能選單一系統,其他硬碟的系統好像偵測不到一樣,變成灰色的選項不給選。所以只好事後補修這個問題啦。

先開機進入BIOS重新選擇開機選單,開到特定Linux,安裝Grub,

apt-get install grub-efi

網路上似乎很少人講這個東西。即使有 issue 被提交了,但下面也沒啥人回應。

首先,打開目標文件:/boot/grub/grub.cfg,搜尋 menuentry 'Windows Boot Manager (on /dev/sdb1)'

然後複製整個 menuentry,在這邊直接修改是沒什麼效果的,到時候Update掉又被OverWritten,打開:/etc/grub.d/40_custom,

在下面直接加入整個 menuentry。以下是示範:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry 'Windows 10 VeraCrypt (on /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-efi-B673-5372' {
	insmod part_gpt
	insmod fat
	set root='hd1,gpt1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  B673-5372
	else
	  search --no-floppy --fs-uuid --set=root B673-5372
	fi
	chainloader /EFI/VeraCrypt/DcsBoot.efi
}

直接改掉 chainloader 的資訊,對應到 /EFI/VeraCrypt/DcsBoot.efi 即可。最後直接輸入指令:

update-grub

這樣就大功告成了。

By Weil Jimmer


This entry was posted in Bash, General, Experience, Note By Weil Jimmer.

行動日(Day of Action) - 網際網路自由
No Comments

發布:
更新:2017-08-14 21:13:25

2017年07月12日,有很多大型網站、論壇、網友們都會團結一致的向美國聯邦通訊委員會(FCC)對網路中立性的破壞表達抗議!您也可以透過這個連結一起加入抗議:https://www.battleforthenet.com/july12/

現在,新的FCC主席試圖有計劃性的摧毀網路中立性,並使各種大型電信業者能夠控制我們所看到的各種網站。如果他們順利通過了,FCC將給這些大公司權力來控制我們在網際網路上看到的東西,同時有權降低網站速度或阻擋網站,甚至對特定網站或應用程式收取額外的費用。

如果我們失去了網際網路中立性,我們很快就會面臨一個受控制、受審查、不自由的網路,一些你喜歡的網頁可能會跑得特別慢,一些擁有資金的大公司的瀏覽相同的網頁卻跑得特別快。或是一些網頁被徹底封鎖無法瀏覽。

但在七月十二日,網際網路中,將會誕生出一股力量團結在一起阻止他們。各大網站與網民和網上論壇都將齊心對抗FCC的對網路的攻擊。

Google、Facebook、Twitter、Dropbox、Imgur、Opera、Amazon……等數不清大大小小的網站都已經加入這個行列了。

「網際網路的戰役(The Battle for the Net)」活動即將展開,使您的朋友、家人和追隨者能夠採取很簡單的行動以抵制這項法案通過。

了解更多並加入行動:https://www.battleforthenet.com/july12/

什麼是網際網路中立?

簡言之,就是網路使用不應該因為使用者的階級、身分、各種因素而被有所差別待遇,ISP業者不可以因為一些私人因素或是政府法令而故意限制某些網站的連線速度、或是封鎖、審查某些網站。所有資訊的獲得應該平等對待,不會受到各種不公的濫用,不會使網際網路變成一個滿足私利的一個工具。

如果沒有網路中立,有可能會發生哪些事情?

我覺得最好拿來比喻的一件事就是中國大陸的網際網路封鎖,沒有所謂的網路言論自由,可能有一堆網站根本連不上或變非常慢,有一堆政府審查的機制。想想看,如果有人在背後監視你在網路上的一舉一動那將是什麼樣的感覺?

我認為網際網路本身就應該要是自由開放的,不會因為被企業、政府控制著而抑制了網路的多元性。


This entry was posted in General, The Internet, Privacy By Weil Jimmer.

為什麼 Telegram 在台灣這麼少人用
No Comments

發布:
更新:2017-05-17 23:49:09

簡介

首先,我想先就 Telegram 是什麼樣性質的一個通訊軟體做個簡單的介紹,第一,它是為了讓用戶擁有秘密通訊的權利而誕生的軟體,本身就不是以營利為目標的,永遠也不會看到 Telegram 哪天發出聲明說開始要收費,或是限制上傳雲端的檔案數量,不會,相比之下,有太多通訊軟體本身就是以營利為目的,為了賺錢,而不是有這種"奉獻"自我、服務大眾的感覺。正因如此,這也是我很喜歡 Telegram 的原因之一,當然還有更多優點我沒有提到。

在台灣用戶數過少 (主要因素)

這種先入為主的概念,一直在很多人身上發生,第一次用了好用的東西,就有很大的機會一直用下去,要突然迫使用戶改用別的東西,是有相當程度的困難,我自己算是例外,我個人是不隨波逐流,在我眼中好就是好,壞就是壞,要用就要用最好的。Telegram 用戶數算很少嗎?相較其他通訊軟體,總得來說,是少的,但是數量也是滿驚人的,

根據 Telegram 官方統計,去年總活躍用戶數已達:100,000,000 人,但反觀在台灣的用戶數,真的是少之又少,可說是被 Line 攻略後,就難以再讓其他通訊軟體取代了吧。

如果裝了 Telegram,身邊卻沒有人使用,想必也沒有人想裝,大多數人是不會去推薦他人,甚至是要求身邊的人都裝自己裝的軟體。而我自己又剛好是特例,如果別人不用 Telegram 就找不到我了,無法傳送訊息或資料給我,我甚至會向周圍的人推薦。(前提是真的好用我才會推薦。)

官方語言是英文 (次要因素)

Telegram 不論是在推特,還是官方網站,官方的所有App,預設都是英文,並沒有繁體中文,這是缺點,但並非無法補足的缺點,有很多社群人士有推出一系列的繁體中文化教學,甚至包刮教人怎麼使用以及了解這套軟體的優缺點。

即便如此,大多數人看到英文還是避之唯恐不及,不想看到英文,或著說看不懂英文,裝完大概就打算砍了。(鄙人真是覺得可惜啊!這些英文單字應該不會難到看不懂的地步。)

其他個人因素

有不少卸載這套軟體的用戶是認為這軟體很不方便(好歸好,沒有人用才是真的),也有人本身就是 Line 的粉絲,認為有 Line 就夠了,何必再裝一套軟體,還有些人認為再多裝軟體會耗費自己的空間容量,會讓手機/電腦變卡。至於為何有人這麼想,我就不多做自己的見解了,給讀者們思考看看,那些人心裡想什麼。

以上,這三點是我認為在台灣很難普及的原因,要看每個人願不願意嘗試新的事物,願不願意打破傳統跳出框架,嘗試看看使用其他通訊軟體的生活,以及不排斥英文的介面。

By Weil Jimmer


This entry was posted in General, Software, Experience By Weil Jimmer.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /24 頁)下一頁 最終頁

Visitor Count

pop
nonenonenone

Note

WPA2 已被 KRACK 攻擊破解!請更新 WiFi 軟體。

歡迎前來本站。

Search

Counter

1912
天前是本網站的生日

Republic Of China
The strong do what they can and the weak suffer what they must.

Privacy is your right and ability to be yourself and express yourself without the fear that someone is looking over your shoulder and that you might be punished for being yourself, whatever that may be.

It is quality rather than quantity that matters.

I WANT Internet Freedom.

Reality made most of people lost their childishness.

Justice,Freedom,Knowledge.

Support/Donate

This site also need a little money to maintain operations, not entirely without any cost in the Internet. Your donations will be the best support and power of the site.
MethodBitcoin Address
bitcoin1NRMVGGpm2T1pmeejisLSEhCXfCefEW9V4
paypal

The Lie We Live

youtube

The Questions We Never Ask

youtube

Support The Zeitgeist Movement

The Zeitgeist Movement

Man

youtube

In The Fall

youtube

Facebook is EATING the Internet

Facebook

Categories

Announcement (4)

Arduino (1)

Bash (2)

C (2)

C# (4)

C++ (1)

Experience (39)

Flash (2)

Free (10)

Functions (35)

Games (13)

General (45)

HTML (7)

Java (12)

JS (7)

Mood (23)

Note (24)

Office (1)

PHP (9)

Privacy (4)

Product (9)

Python (4)

Software (8)

The Internet (15)

Tools (12)

VB.NET (8)

WebHosting (7)

Wi-Fi (5)

XML (4)