Tôi có một ứng dụng Windows 7, sử dụng Stollmann SDK để liên kết thành công PC với Android. Các hai chiều trao đổi địa chỉ MAC Bluetooth, băm và Randomizer được thực hiện ra khỏi ban nhạc qua NFC:Bluetooth Secure Simple Pairing (SSP) sử dụng mã QR là Out of Band (OOB) kênh
Mã nguồn của ứng dụng Windows tiếc là không thể được chia sẻ tại đây. Ở phía Android không cần ứng dụng và Ghép nối an toàn đơn giản được hệ điều hành thực hiện (theo HandoverManager?) Sau khi nhận được thông báo NDEF với application/vnd.bluetooth.ep.oob
.
Bây giờ tôi đang cố gắng tạo an Android app, sử dụng một chiều xác thực để thực hiện ghép nối OOB thông qua mã QR được quét (thay vì NFC).
Mã QR tùy chỉnh sẽ được hiển thị ở màn hình PC (được tạo bởi ZXing.Net) và chứa địa chỉ MAC Bluetooth, băm và trình ngẫu nhiên.
Tuy nhiên OOB liên kết dường như được chưa được thực hiện trong Android -
/**
* Read the local Out of Band Pairing Data
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
*
* @return Pair<byte[], byte[]> of Hash and Randomizer
*
* @hide
*/
public Pair<byte[], byte[]> readOutOfBandData() {
if (getState() != STATE_ON) return null;
//TODO(BT
/*
try {
byte[] hash;
byte[] randomizer;
byte[] ret = mService.readOutOfBandData();
if (ret == null || ret.length != 32) return null;
hash = Arrays.copyOfRange(ret, 0, 16);
randomizer = Arrays.copyOfRange(ret, 16, 32);
if (DBG) {
Log.d(TAG, "readOutOfBandData:" + Arrays.toString(hash) +
":" + Arrays.toString(randomizer));
}
return new Pair<byte[], byte[]>(hash, randomizer);
} catch (RemoteException e) {Log.e(TAG, "", e);}*/
return null;
}
/**
* Start the bonding (pairing) process with the remote device using the
* Out Of Band mechanism.
*
* <p>This is an asynchronous call, it will return immediately. Register
* for {@link #ACTION_BOND_STATE_CHANGED} intents to be notified when
* the bonding process completes, and its result.
*
* <p>Android system services will handle the necessary user interactions
* to confirm and complete the bonding process.
*
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
*
* @param hash - Simple Secure pairing hash
* @param randomizer - The random key obtained using OOB
* @return false on immediate error, true if bonding will begin
*
* @hide
*/
public boolean createBondOutOfBand(byte[] hash, byte[] randomizer) {
//TODO(BT)
/*
try {
return sService.createBondOutOfBand(this, hash, randomizer);
} catch (RemoteException e) {Log.e(TAG, "", e);}*/
return false;
}
/**
* Set the Out Of Band data for a remote device to be used later
* in the pairing mechanism. Users can obtain this data through other
* trusted channels
*
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
*
* @param hash Simple Secure pairing hash
* @param randomizer The random key obtained using OOB
* @return false on error; true otherwise
*
* @hide
*/
public boolean setDeviceOutOfBandData(byte[] hash, byte[] randomizer) {
//TODO(BT)
/*
try {
return sService.setDeviceOutOfBandData(this, hash, randomizer);
} catch (RemoteException e) {Log.e(TAG, "", e);} */
return false;
}
Câu hỏi của tôi:
Kể từ OOB Xanh ghép nối răng hoạt động tốt trên NFC trên Android - bạn có nghĩ rằng có một cách (hackish) để thực hiện tương tự thông qua mã QR không?
Có thể (ý tưởng điên rồ) bằng cách cho ăn HandoverManager
bằng thông báo NDEF giả mạo?
Tôi không biết nếu nó có thể, nhưng tôi thích ý tưởng điên rồ của bạn. Đây là một phát bắn trong bóng tối mà tôi không có thời gian để kiểm tra ngay bây giờ, nhưng NFC có gửi một Broadcast khi được kích hoạt không? https://play.google.com/store/apps/details?id=lt.andro.broadcastlogger&hl=vi –
Xin chào @Alexandee Farbar. Bạn có nhận được câu trả lời cho câu hỏi của mình không? – ymerdrengene