Chào mừng bạn đến với Điện Tử Viễn Thông SV! =>>Chúc Bạn Một Ngày Vui Vẻ....!

Thứ Năm, 15 tháng 6, 2017

Điều khiển Mạch Arduino từ xa qua remote TV

Điều khiển Mạch Arduino từ xa giao tiếp với hồng ngoại

Giải mã bất kỳ loại remote TV nào để dùng nó vào việc điều khiển từ xa thiết bị của bạn
 dùng arduino.

 



  • Arduino
  • Remote hồng ngoại bất kỳ
  • Mắt thu hồng ngoại
  • Board cắm dây
  • Dây cắm
  • LED
Thực hiện nối cảm biến hồng ngoại vào arduino như sau:
(Vout) chân 1 cảm biến hồng ngoại nối vào chân 11(Arduino)
(GND) chân 2 cảm biến hồng ngoại nối vào chân GND(Arduino)
(Vcc) chân 3 cảm biến hồng ngoại nối vào chân 5V(Arduino)


  • Thự hiện giải mã hồng ngoại bằng cách chạy chương trình sau:

#include <IRremote.h>

int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // bắt đầu nhận tín hiệu
}

void loop() 
{
  if (irrecv.decode(&results)) 
    {
      Serial.println(results.value, DEC); // In giá trị ra
      irrecv.resume();   // nhận tiếp tục
    }
  
  
}
Sau khi nạp chương trình vào arduino, nối cảm biến như bước 1, ta chạy chương trình
và mở Serial Monitor của arduino ide lên để xem, tiến hành nhấn remote để xem kết quả
nhận được là các giải số đã được giải mã
Ví dụ khi nhấn nút nguồn remote bạn sẽ nhận được mã sau:
16753245
4294967295
4294967295
4294967295
4294967295
4294967295
4294967295
4294967295
Nút mode:
16736925
4294967295
4294967295
4294967295
4294967295
(Chú ý: các số nhận được ở đây tùy vào loại remote TV bạn dùng nhé)


Sau đây chúng ta sẽ test code ở phía trên với phím mode và phím nguồn của remote
 để bật tắt LED 13 tích hợp sẳn trong board arduino

#include <IRremote.h>

int IRpin = 11;  // Chân cảm biến nhận hồng ngoại
int LED = 13;    // chân LED
IRrecv irrecv(IRpin);
decode_results results;
boolean LEDon = true; // 
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Bắt đầu nhận tín hiệu
  pinMode(LED, OUTPUT);
}

void loop() 
{
   
  if (irrecv.decode(&results)) 
    {
      
      irrecv.resume();   // Nhận tiếp
    }
  
   if (results.value == 16753245)  // nếu giá trị nhấn là nút mode   // (bạn có thể đổi giá trị tương ứng cho nút mình muốn)
     {
       if (LEDon == true)   // Nếu LED sáng thì tắt và ngược lại
         {
           LEDon = false;   
           digitalWrite(LED, HIGH);
           delay(100);      //             
         }         
        else
          {
            LEDon = true;
            digitalWrite(LED, LOW);
            delay(100);            
          }
          
     }

}
>>>Video hướng dẫn youtube

---------------------------CHÚC BẠN THÀNH CÔNG !--------------------------

Giao tiếp vi điều khiển với hồng ngoại điều khiển bằng remote

I.GIỚI THIỆU
1.REMOTE HỒNG NGOẠI
·Remote là một thiết bị phát sóng hồng ngoại, sử dụng trong các mục đích điều khiển từ xa (tầm 10m). Remote nhận lệnh điều khiển từ người điều khiển thông qua các phím bấm, sau đó xuất ra một khung dữ liệu ứng với phím được bấm.
·Có rất nhiều loại remote được sử dụng như: Sony, LG,… mỗi loại có 1 cách mã hóa phím bấm khác nhau (các bạn có thể tự tìm hiểu thêm).
·Trong project này mình sử dụng remote 3 kênh:

Khi 1 kênh được ấn, khung truyền dữ liệu có dạng như sau:
[​IMG]
Sau xung START, 8 bit 0, 8 bit 1 là mã của kênh được bấm.
>Bit 0 được định nghĩa: tín hiệu ở mức thấp trong 700us và ở mức cao trong 500us.
>Bit 1 được định nghĩa: tín hiệu ở mức thấp trong 700us và ở mức cao trong 1600us.

2.MẮT THU HỒNG NGOẠI.
·Mắt thu hồng ngoại gồm 3 chân: VCC, GND, DATA:
[​IMG]
·Mắt thu hồng ngoại có chức năng chuyển sóng hồng ngoại phát ra từ remote thành đúng dạng tín hiệu số ứng với phím được bấm, nhưng tín hiệu ra có pha ngược với tín hiệu từ remote.
·Khi không có sóng tới, tín hiệu ra trên chân DATA ở mức cao.

II.THỰC HÀNH PROJECT.
1.THIẾT KẾ PHẦN CỨNG.
Trong project này, có 2 khối các bạn cần thiết kế:
-Khối vi điều khiển Atmega 8 và mắt thu hồng ngoại:
[​IMG]
-Khối Relay để điều khiển thiết bị bên ngoài:
[​IMG]
2.LẬP TRÌNH PHẦN MỀM.
Đối với hồng ngoại, thuật toán của bạn đưa ra chỉ cần thỏa mãn 2 yêu cầu sau:
-Các kênh khác nhau cho mã lệnh khác nhau khi được ấn.
-Một kênh chỉ cho duy nhất một mã lệnh. 
(Mã nhận về không cần thiết phải giống mã của nhà sản xuất định sẵn cho các kênh).
Dựa vào khung truyền đã nói ở trên, mình sẽ có 2 hàm để xử lý cảm biến hồng ngoại:
-Hàm kiểm tra xung START: 
Mã:
// Ham check xung START
/* Xung START là xung co:
- tin hieu o muc thap (0) có do dai 9ms
- tin hieu o muc cao (1) có do dai 4ms
Chi kiem tra tin hieu o muc thap dung 9ms la dung xung START
*/
unsigned char check_start()
{
    unsigned char i;
    if(DATA_INFR==0)              // Neu co canh xuong cua tin hieu
    {
          delay_us(500);          // Delay de chong nhieu
          if(DATA_INFR==0)        // Neu dung la co canh xuong cua tin hieu
          {
              for(i=0;i<40;i++)  // Chia nho xung START thanh 40 doan, moi doan dai 200us
              {
                    delay_us(200);
                    if(DATA_INFR==1) return 0;    // Neu tin hieu len muc cao (1) --> khong phai xung START
              }
              while(DATA_INFR==1);   
              return 1;          // Dung la xung start
          }
 
    }
}  
-Hàm nhận về mã của kênh remote:
// ===============================================================
//  Ham doc ma cua cac kenh
unsigned long int infr_sensor()
{
    unsigned char i;
    unsigned int Data_Infr;
    Data_Infr=0;
    if(check_start())                  // Neu dung xung START
    {
          while(DATA_INFR==1);          // Cho het bit 1 tiep theo
          while(DATA_INFR==0);          // Cho het bit 0 tiep theo
          for(i=0;i<24;i++)            // Lay 24 bit du lieu (bao gom 8 bit 0 va 8 bit 1 dau tien sau xung start)
          {
              //while(DATA_INFR==0);
              delay_us(750);          // Delay 750us de kiem tra bit
              if(DATA_INFR==0) Data_Infr=Data_Infr*2 + 1;
              if(DATA_INFR==1) Data_Infr=Data_Infr*2;
              while(DATA_INFR==1);    // cho canh len
              while(DATA_INFR==0);    // cho canh len
          }
          delay_ms(600);                // Cho het tin hieu (chong nhieu)
    }
    return Data_Infr;                  // Gia tri ma kenh tra ve
}
Trước khi dùng phục vụ mục đích điều khiển, các bạn nên cho hiển thị mã của các kênh trên remote lên LCD1602 để lưu lại giá trị mã của từng kênh.
Các bạn có thể tham khảo code mẫu dưới đây
Mã:Gi
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program
 
Project : DIEU KHIEN QUAT DIEN SU DUNG REMOTE HONG NGOAI 20 KENH.
Version : V1.0.0
Comments: Su dung 2 Relay dieu khien ON/OFF quat va che do quay quat
 
Chip type              : ATmega8
Program type            : Application
AVR Core Clock frequency: 1.000000 MHz
Memory model            : Small
External RAM size      : 0
Data Stack size        : 256
*****************************************************/
 
#include <main.h>
 
void main(void)
{
 
unsigned char Lcd_Buffer[20];           
unsigned long int Data;      // Ma cac kenh cua remote               
// Declare your local variables here
 
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x10;
DDRB=0x00;
 
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0xff;
DDRC=0xff;
 
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x0f;
 
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTB Bit 1
// RD - PORTB Bit 2
// EN - PORTB Bit 3
// D4 - PORTC Bit 2
// D5 - PORTC Bit 3
// D6 - PORTC Bit 4
// D7 - PORTC Bit 5
// Characters/line: 16
RELAY1 = RELAY2 = 1;
/*
lcd_init(16);                // Ham khoi tao LCD1602
lcd_clear();                  // Ham xoa LCD1602
lcd_gotoxy(0,0);              // Di chuyen con tro den vi tri (0,0)
lcd_putsf("MINHHAGROUP.COM");
*/
while (1)
      {
          Data = infr_sensor();    // Gan ma cua kenh vao bien Data 
/*
Ham hien thi gia tri ma cua cac kenh len LCD1602
    if(Data!=0)
    {
          lcd_gotoxy(0,1)
          sprintf(Lcd_Buffer,"Ma Kenh: %lu",Data);
          lcd_puts(Lcd_Buffer);
    }
*/
 
// Ham dieu khien RELAY ========================================================   
          if(Data!=0)              // Neu co kenh tren remote duoc an   
          { 
              if(Data == OF_QUAT) // Thuc hien lenh dieu khien ung voi moi phim
              {   
                    RELAY1 =~RELAY1;       
              } 
                if((Data == QUAY_QUAT)|(Data == QUAY_QUAT1))
              {         
                  RELAY2 =~RELAY2;
              }
             
          } 
         
      }
}
 
//---------------END OF FILE-----------------/
//--------------------------------------------/

Thứ Tư, 7 tháng 6, 2017

Điều Kiện Cần Và Đủ Để Mạch VĐK 8051 Hoạt Động.

I. Một Số Thông Số Kỹ Thuật Của Vi Điều Khiển 8051.

     Khi làm việc với bất kì một dòng vi điều khiển nào đó, các bạn nên tham khảo datasheet của nó để có được những thông số kỹ thuật và tính năng mà dòng vi điều khiển đó có để có thể giúp các bạn thiết kế ứng dụng tốt hơn, tránh được những sai sót. Sau đây mình xin nêu ra một số thông số như dung lượng bộ nhớ flash, ram, điện áp hoạt động, tần số thạch anh max của dòng vi điều khiển 8051. Cần chi tiết hơn, các bạn vui lòng tham khao datasheet.


Bảng 1.1: Một số thông số của VĐK 8051.

     Lưu ý là đối với dòng AT89S (AT89S51, AT89S52) thì tần số thạch anh lớn nhất là 33MHz.

II. Một Số Điều Kiện Cần Và Đủ Để Mạch VĐK 8051 Hoạt Động.

 1. Cung cấp đủ nguồn cho vi điều khiển.

     Đối với một thiết bị điện tử thì nguồn điện chính là một phần không thể thiếu để có thể hoạt động được. Vi điều khiển cũng vậy, đối với VĐK 8051 các bạn cần thiết kế một mạch cung cấp nguồn ổn định (Không bị nhiễu) để cấp cho vi điều khiển (chân 20 và 40 của AT89X51, AT89X52). Các bạn có thể sử dụng các IC ổn áp như 7805, LM2596, LM2576, AMS1117.... Sau đây, mình xin giới thiệu một mạch nguồn sử dụng IC ổn áp 7805 thường được dùng cho các mạch vi điều khiển.


Hình 2.1: Mạch nguồn dùng 7805.
     Khi thiết kế mạch nguồn thì các bạn nên thiết kế led báo nguồn như sơ đồ trên để khi chạy chúng ta sẽ biết được mạch đã có nguồn hay chưa. Khi mạch đã có nguồn (led báo nguồn sáng), các bạn nên kiểm tra thêm, dùng đồng hồ đo volt đo trên 2 chân 40 và 20 của vi điều khiển đã có điện áp trong khoảng 4.5V - 5V hay chưa, nếu chưa có, cần kiểm tra lại.

2. Mạch dao động và Reset.

     Vi điều khiển muốn hoạt động được cần có một nguồn tạo dao động. Trong các mạch vi điều khiển thường sử dụng thạch anh để tạo dao động.
     Mỗi VĐK có một chân gọi là chân RESET, đối với dòng AT89X51, 52 thì chân RESET là chân số 9. Đây là chân mà khi được đưa lên mức 1 (5V) VĐK sẽ rơi vào trạng thái reset, do vậy để VĐK hoạt động, chân này cần được nối qua một trở 4.7k - 10k xuống mass để khi bình thường, trạng thái trên chân 9 (RESET) là mức 0, trạng thái chip hoạt động. Khi cần một nút nhấn để reset mạch, các bạn nên mắc một nút nhấn nối giữa chân 9 và nguồn dương.
     Sau đây, mình xin giới thiệu mạch dao động dùng thạch anh và mạch reset thường được dùng cho vi điều khiển 8051.
Hình 2.2: Mạch dao động và reset.

    Các bạn chú ý là khi các bạn không có mạch dao động thạch anh hoặc chân số 9 của vi điều khiển vô tình bằng cách nào đó bị kéo lên mức 1 (5V) thì vi điều khiển sẽ không hoạt động, vậy nên khi mạch không chạy các bạn nên kiểm tra xem mạch dao động thạch anh và mạch reset đã đúng hay chưa.

3. Chân 31 (EA/VPP) của VĐK 8051.

     Khi các bạn thiết kế mạch vi điều khiển không sử dụng bộ nhớ ngoài để chứa chương trình (code) thực thi, các bạn cần nối chân (EA/VPP) này lên nguồn dương (5V). Đây là chân chọn bộ nhớ lưu giữ chương trình thực thi của vi điều khiển. Khi các bạn nối lên +5V là các bạn đã chọn thực thi chương trình từ bộ nhớ flash bên trong VĐK. Do vậy các bạn cần chú ý tới chân này khi thiết kế mạch ứng dụng VĐK 8051.

4. Trở treo cho PORT P0.

     Đối với VĐK 8051, khi các bạn sử dụng chân của port P0 để điều khiển thì các bạn phải sử dụng trở treo cho các chân port P0. Thường sử dụng trở băng 10k cho 8 chân của port P0.

5. Đưa ra các chân mạch nạp.

     Đây không phải là điều kiện để mạch hoạt động, nhưng mình đưa thêm lưu ý này vào đây, để khi thiết kế mạch, các bạn vẽ thêm các chân mạch nạp để trong quá trình test code sẽ nạp trực tiếp onboard (chỉ dùng được với dòng 89S có hỗ trợ chuẩn nạp ISP) sẽ tiện lợi hơn rất nhiều là khi các bạn cứ phải tháo chip ra vào, dễ làm gãy chân chip.

     Trên đây là một số lưu ý cho các bạn khi mới bắt đầu làm việc với dòng VĐK 8051. Đặc biệt là các bạn sinh viên khi lấy mạch được chia sẻ trên mạng có mô phỏng bằng proteus. Các bạn lưu ý là trong proteus không có 2 chân nguồn 20, 40 đưa ra ngoài (nó đã được ngầm hiểu đã nối nguồn), không cần mạch dao động hay reset vẫn mô phỏng được. Do đó khi các bạn lấy mạch mô phỏng về muốn làm chạy thì các bạn phải thêm đầy đủ các mạch mình đã nói ở trên. Mình gặp nhiều trường hợp sinh viên nhờ kiểm tra sao mạch làm đúng trên mạng mà vẫn không chạy? Mình kiểm tra thấy chân 20, 40 bỏ trống. Hỏi ra mới biết các bạn thấy mạch mô phỏng không có nên không vẽ .
     Chúc các bạn thành công....?

Thứ Hai, 5 tháng 6, 2017

Biến OneDrive của Microsoft thành ổ cứng trên máy tính

OneDrive là hệ thống lưu trữ đám mây của Microsoft, tuy nhiên với hướng dẫn biến OneDrive thành ổ cứng, bạn sẽ có thêm dung lượng từ dịch vụ này trên máy tính cá nhân.


Thủ thuật biến OneDrive của Microsoft thành ổ cứng trên máy tính

Thông thường để tải dữ liệu lên OneDrive bạn phải tải ứng dụng để đồng bộ cùng với máy tính hoặc phải vào web của OneDrive để tải lên. Tuy nhiên nếu bạn biến OneDrive thành ổ cứng trên máy tính thì việc này dê hơn rất nhiều. Bạn chỉ việc copy file cần tải lên ổ cứng vừa tạo là OneDrive sẽ tự động đồng bộ chúng lên dữ liệu trên mây.

Sau đây là các bước để bạn thực hiện biến OneDrive thành ổ cứng riêng trên máy tính.

Bước 1: Lấy mã tài khoản


Tất nhiên việc đầu tiên, bạn phải có tài khoản Microsoft và sử dụng OneDrive. Truy cập vào trang OneDrive và đăng nhập. Sau khi đăng nhập thành công bạn để ý trên thanh địa chỉ sẽ có một mã tài khoản của mình, chép mã này vào đâu đó hoặc chép lại.

Bước 2: Tạo ổ đĩa 
- Vào This PC (Explorer) -> tab Computer -> Chọn Map Network Driver.



- Sau đó hiện ra cửa sổ  Map Network Driver. bạn nhập địa chỉ sau vào thanh Folder: 'https://d.docs.live.net/ma_tai_khoan'. Trong đó ma-_tai_khoan là mã bước 1 bạn đã chép lại. Bấm Finish và chờ để nó kết nối Sever OneDrive.



Bước 3: Thiết lập ổ cứng


Sau khi kết nối thành công một hộp thoại đăng nhập tài khoản Microsoft hiện ra, bạn nhập tài khoản xong và chờ kết quả. Nếu thành công một ổ đĩa sẽ xuất hiện trong This PC, bạn có thể đổi tên để cho nhìn dễ hơn.



Như vậy là bạn đã có một ổ đĩa dành riêng cho OneDrive, nếu muốn tải lên file nào bạn chỉ việc copy/past như bình thường là dữ liệu sẽ tự đồng bộ. Ngoài ra việc biến OneDrive thành ổ cứng cực kỳ tiện lại cho các máy có dung lượng thấp.

            ------------------------------------Hết----------------------------------------

Chủ Nhật, 4 tháng 6, 2017

Phương thức FBI dùng phá khóa iPhone














Cuối tháng 3 vừa qua, FBI tuyên bố đã thâm nhập thành công chiếc iPhone 5C được bảo vệ bằng mật mã của Syed Farook, tay súng trực tiếp gây ra vụ tấn công tại San Bernardino, bang California, Mỹ làm 14 người thiệt mạng.
Tuy nhiên, vẫn chưa rõ là liệu FBI có tìm thấy bất kì thông tin nào hữu ích cho cuộc điều tra của họ hay không, nhưng việc phá khóa thành công này ít ra cũng giúp tạm hoãn cuộc chiến pháp lí rất được công chúng quan tâm giữa Apple và FBI về quyền riêng tư và việc mã hóa.
Ban đầu, FBI trước sau như một không nêu danh tính của bên trợ giúp và cũng không tiết lộ cách họ truy cập được nội dung của chiếc iPhone. Nhưng vào thời điểm hiện nay, cao nhân giúp FBI đã rõ, đó là đối tác lâu năm của chính phủ Mỹ: công ty Cellebrit đến từ Israel.
Và để làm sáng tỏ vài khả năng mà FBI có thể khai thác, tạp chí khoa học công nghệ IEEE Spectrumđã trao đổi với 9 chuyên gia bảo mật máy tính và "pháp y" điện thoại di động về một số kĩ thuật được tin chắc sẽ có thể giúp ích cho vụ bẻ khóa lịch sử cũng như gây tranh cãi này.

1. Lối vào dễ dàng

Có lẽ cách bẻ khóa đơn giản nhất trong mọi cách là khai thác một điểm yếu của iOS 9, hệ điều hành của Apple hiện cài trên chiếc iPhone 5C của nghi phạm Farook.
Một số chuyên gia như Robert Cunningham là Chủ tịch nhóm sáng kiến an ninh không gian mạng tại Viện IEEE quốc tế và Dudu Mimran là Giám đốc công nghệ của Phòng thí nghiệm đổi mới sáng tạo Telekom tại Đại học Ben-Gurion, Israel đều tin rằng đây là hướng tiếp cận khả dĩ nhất.
Nếu tấn công đúng lỗ hổng bảo mật hay còn được gọi là khai thác lỗi "zero-day" thì kẻ bẻ khóa (trong trường hợp này là các chuyên gia) có khả năng tắt những chức năng vốn dĩ đã ngăn chặn việc thâm nhập trước đó của FBI.
Những lỗi này có thể là tính năng được thiết kế sẵn nhằm chặn người dùng thử quá nhiều tổ hợp mật khẩu sai cùng lúc và tùy chọn cài đặt lệnh cho iPhone xóa bộ nhớ sau 10 lần nhập sai mật khẩu.
Một khi đã xác định được lỗ hổng thì sẽ có rất nhiều cách để cài mã nhằm khai thác nó. Mã này có thể gửi ở dạng thông điệp văn bản mã độc hay khai thác trình điều khiển kết nối với bộ sạc điện bằng máy tính xách tay nhằm cho phép tải phần mềm mới vào điện thoại.
Một điểm thưởng nữa cho những mánh khóe thâm nhập qua lỗi dạng này là nguy cơ tương đối thấp vì những chiến lược này tránh được việc tác động ngoài ý muốn đến những thành phần vật lí của iPhone (cách này sẽ trình bày sau).
Ảnh
Joel Bollo - CEO của MSAB, cho biết hầu hết giải pháp "pháp y" cho điện thoại di động mà công ty ông thực hiện cho những khách hàng là giới hành pháp đều dựa trên phần mềm.
Vậy thì dạng lỗi zero-day nào có thể giúp các giới chức thâm nhập được một thiết bị?
Tuy không hoàn toàn biết rõ nhưng cũng sẽ không hợp lí nếu cho rằng không tồn tại lỗ hổng này.
Thị trường của việc phát hiện những lỗi như thế rất to lớn. Đơn cử, hồi mùa Thu 2015, hãng bảo mật không gian mạng Zerodium đã thưởng 1 triệu USD cho một nhóm đã trưng ra một lỗ hổng trong iOS 9.
Mimran từng nói rằng không có phần mềm nào được xem là không thể bắn thủng.

2. Đánh lừa hệ điều hành

Bên trong iPhone 5C là chip A6 đặc trưng bởi có cả những bộ xử lí và RAM cùng làm việc để đạt tốc độ nhanh hơn các máy đời trước. Để kiểm soát số lần thử mật khẩu, chiếc "máy tính trên chip" này cũng giao tiếp với bộ nhớ không xóa (non-volatile memory) được lưu trữ ở nơi khác, ví dụ trong bộ nhớ flash.
Thiết kế này dẫn các chuyên gia đến lí thuyết thứ hai: những kẻ bẻ khóa có thể đi tránh chốt bảo vệ iPhone bằng mật khẩu thông qua việc thâm nhập các tác vụ giữa A6 và bộ nhớ không xóa này.
Ran Canetti, một nhà khoa học máy tính tại Đại học Tel Aviv và cũng là người đứng đầu Học viện Bảo mật thông tin Check Point (Check Point Institute of Information Security), cho biết có một cách để làm điều này là can thiệp vào đường giao tiếp vật lí truyền những lệnh phục hồi mật khẩu giữa hai thành phần nêu ở trên (chip A6 và bộ nhớ không xóa).
Một tay bẻ khóa có kiến thức có thể dùng đường truyền này để chuyển hướng phần mềm của Apple làm nhiệm vụ so trùng lệnh giữa cả bộ nhớ flash và RAM của điện thoại ra thiết bị ngoài.
FBI và đối tác ẩn danh của họ có thể đã dùng một thiết bị như thế để ra lệnh cho phần mềm này vẫn nhận mật khẩu sai cho đến khi những người điều tra tìm ra mật khẩu đúng.
Ảnh
Với phần mềm đã được chỉnh sửa, FBI có thể khởi động cách tấn công vét cạn brute-force truyền thống, nghĩa là dùng một phần mềm để nhanh chóng thử tất cả tổ hợp mật khẩu cho đến khi tìm ra mật khẩu đúng. Vì chiếc iPhone 5C của Farook dùng mật khẩu có 4 kí số, nên chương trình tấn công có thể thử từng tổ hợp mật khẩu của 10.000 khả năng chỉ trong vài phút.
Công nghệ brute-force không quá phức tạp và bạn có thể chọn mua ngay trên Ebay để bẻ khóa những phiên bản iPhone đời cũ.

3. Reset liên tục bộ nhớ

Một trong những lí thuyết phổ biến nhất của giới chuyên gia mã hóa, kể cả Gary McGraw - Giám đốc công nghệ của hãng tư vấn bảo mật phần mềm Cigital, là FBI đã bẻ khóa chiếc iPhone bằng một chiến thuật được gọi là tạo ảnh của NAND (NAND mirroring).
NAND là một dạng công nghệ flash dùng trong các chip nhớ của các dạng lưu trữ dài hạn, dung lượng cao.
Trong iPhone, NAND được cho là có vai trò xóa khóa số cần để mở khóa bộ nhớ của iPhone sau 10 lần đăng nhập sai mật khẩu. Nhưng nếu bạn biết cách đi vòng tránh hay hoàn nguyên (reset) biểu ghi này sau mỗi lần thử thì có thể thử vô số lần.
Một cách có thể làm thủ công là lấy đi chip nhớ mà NAND bảo vệ và tạo một bản sao của nó. Một khi đã có bản sao này, kẻ bẻ khóa có thể thử mọi tổ hợp mật khẩu và nạp ngược bộ nhớ này vào chip gốc trước khi vượt giới hạn 10 lần thử.
Chuyên gia pháp lí về iPhone, ông Jonathan Zdziarski nói rằng chiến lược này cũng giống như nhấn nút “save” trong khi chơi game.
Nếu bạn chết (hay trong trường hợp này là mất dữ liệu) thì chỉ cần quay lại và chọn nơi mình đã lưu lại.
Dù nó là phương pháp được ưa chuộng nhất trong những chuyên gia bảo mật không gian mạng, song Giám đốc FBI James Comey từng nói trong một cuộc họp báo ngắn diễn ra hồi tháng 3/2016 là hướng tiếp cận này, còn được gọi là tấn công kiểu lập lại hay reset, sẽ không có tác dụng với điện thoại của Farook.
Tuy nhiên, nhiều người vẫn nghi ngờ sự cố chấp của Comey; ngay sau phát biểu của người đứng đầu FBI, chuyên gia Zdziarski đã phản đối bằng cách trình diễn kĩ thuật này trong một bài viết trên blog cá nhân.
Bài viết đó đã thuyết phục McGraw của Citigal về cách làm này, và đó không phải là người duy nhất.
Chuyên gia Dylan Ayrey của công ty bảo mật Praetorian cho rằng chiến lược này rất khả dĩ và về cơ bản cũng giống như cách họ đã từng thực hiện.

4. Phân rã chip nhớ

Chip nhớ của iPhone được che giấu trong nhiều lớp bảo vệ vật lí và số hóa nhằm chống những kẻ bẻ khóa. Để tìm ra những bí mật này, kẻ bẻ khóa đôi lúc phải tổ chức tấn công vật lí để vượt qua một số tính năng chống xâm nhập.
Có vài cách để làm điều này. Kẻ bẻ khóa có thể bắt đầu bằng cách nung nóng thiết bị để tách rời chip nhớ. Bước tiếp theo, kẻ bẻ khóa dùng axít để loại bỏ các lớp mặt của chip bằng kĩ thuật được gọi là "tẩy vỏ" (decapping).
Ảnh
Công việc tiếp theo là dùng mũi khoan laser cực nhỏ để thao tác chính xác trong việc tìm đúng những phần trên con chip này mà tay bẻ khóa muốn tìm hiểu cặn kẽ.
Ari Juels, một giáo sư bảo mật tại Đại học Cornell nói rằng mục tiêu trong vụ án Farook là trích xuất định danh (unique ID) của điện thoại, đó là một khóa số đặc biệt mà Apple gán cho từng thiết bị trong quá trình sản xuất và có thể dùng để giải mã bộ nhớ của iPhone.
Apple đã nói trong một bạch thư phát hành mùa Thu 2015 là để lấy được khóa này, kẻ bẻ khóa phải thực hiện cuộc tấn công vật lí rất phức tạp và tốn kém.
Đây chắc chắn là một chọn lựa mà FBI có thể xét đến dù sẽ gặp phải nguy cơ phá hủy vĩnh viễn bộ nhớ của điện thoại nếu kĩ thuật viên phạm phải sai lầm nhỏ nhất.
Dan Wallach, là chuyên gia bảo mật máy tính tại Đại học Rice cảnh báo đây là cách rất phức tạp, tốn kém và nhiều nguy cơ, bởi lẽ một quá trình giải cấu trúc có khả năng phá hủy thiết bị.

5. Lẻn vào từ cửa hông

Một thiết bị phải tải nặng lúc hoạt động có thể vô tình để lại những dấu vết về thông tin mà nó đang xử lí. Những dấu vết này gồm mức tiêu thụ điện năng, đặc điểm âm học, bức xạ điện từ hay thời gian cần để một linh kiện hoàn tất một tác vụ.
Trong kiểu tấn công được gọi là tấn công kênh sườn (side-channel attack), các chuyên gia có thể dùng những công cụ chuyên dụng để kiểm soát những đặc điểm trên và dùng dữ liệu thu thập được để suy luận những gì đã xảy ra bên trong thiết bị.
Ví dụ, kẻ bẻ khóa có thể gắn một điện trở vào các vi mạch bên trong iPhone và đọc mức năng lượng truyền qua ứng với từng mật khẩu được thử.
Chuyên gia Mimran tại Đại học Ben-Gurion ví von cách này giống như bạn áp tai vào két sắt và lắng nghe tiếng gõ phù hợp trong khi vặn vòng số.
Tuy nhiên, Chủ tịch Hiệp hội IEEE Cunningham cho rằng kẻ bẻ khóa không thể đọc được PIN hay mật khẩu bằng cách này, bởi một kẻ xâm nhập như vậy hầu như chắc chắn phải thu nhặt các chi tiết về kích thước hay độ phức tạp của khóa này, và bản chất của hệ thống mã hóa từ bên trong.
Ảnh
Ví dụ, quá trình truy tìm mật khẩu dựa trên một dạng mã hóa được gọi là phép nhân Montgomery đòi hỏi chip lặp đi lặp lại phép bình phương một chuỗi số lớn. Cuối cùng, nó lệnh cho chip nhân kết quả với số nguyên cuối cùng của chuỗi tính toán khổng lồ này. Tùy vào những số nguyên và thời điểm con chip thực hiện phép tính mà quá trình này có thể đòi hỏi nhiều hay ít năng lượng.
Chuyên gia Wallach tại Đại học Rice nói rằng nơi tốt nhất để thực hiện tấn công kênh sườn là yêu cầu những thông số kĩ thuật của chiếc iPhone 5C từ những công ty như Chipworks hay iFixit.
Những hãng này chuyên phân rã những thiết bị thương mại và ghi lại những báo cáo chi tiết về các linh kiện cũng như đưa ra suy luận tốt nhất của họ cách thức thông tin truyền đi trong một thiết bị.
Nhưng ngay cả khi có được tài liệu "mật", một cuộc tấn công kênh sườn cũng vẫn là quá trình rất tinh vi vì những mạch và linh kiện của điện thoại thông minh được tạo nên từ những mạch dẫn và chip cực nhỏ.
Hơn nữa, nhà sản xuất chip cũng khôn ngoan hơn với cách tấn công này vì hiện nay nhiều hãng đã cài những tính năng để chip tạo nhiễu điện từ hay duy trì dòng điện ổn định dù đang thực hiện nhiệm vụ nào nhằm chống lại những kẻ tấn công.
Theo PC World VN.