쿼드콥터 제작기 01 - 부품주문, 조립

Posted by dw0rdptr
2015. 5. 31. 03:36 IoT/QuadCopter

중간고사 끝나자마자 수학여행, 체육대회가 겹치니까 정신이 없어 그동안 부품이도착해도 조립할 엄두를 못냈다.. 아무튼 다시 속도내보자


 

컨트롤보드(라즈베리파이2,아두이노 쉴드 Rpino) 

프레임(550mm 카본프레임)

BLDC 모터

ESC(변속기)

파워분배기

배터리(4000mah 이상으로 예정),배터리 충전기

프로펠러(10x4.7프롭)

가속도, 자이로센서(MPU-9250 or GY-86)

라즈베리파이 카메라 모듈

+ 배터리 셀 체커


사다보니 좀 많아지긴 했다.. 싸니까 이것저것 사게되는듯한데 가격은 모두 약 325달러, 우리돈으로 36만원쯤되는듯 (아두이노+라즈베리파이 제외)

아오ㅠㅠ 시즌준비 하려면 장비도 사야되고 시즌권도 사야돼서 돈모아놔야 되는데 예상했던것보다 더 많이 써서 출혈이 크다 ㅁㄴㄹㅇ


현재 배터리와 충전기 제외한 부품 배송완료 

센서는 이베이에서 싸게샀는데 2주는 더 걸릴 것 같다 


기본 프레임조립+모터와 프롭 조립 후 ESC와 커넥터납땜(절연테이프로 마감), 파워분배기

모터 프롭 악세서리 하나가 규격이 안맞아서 동네 철물점에서 깎아옴.. 납땜도 너무 오랜만에 해서 어설프게됐다



앞으로 할게 많은데 2학기 시작전에 끝낼수나 있으려나.. 안드로이드도 천천히 배워놓아야겠다.


*8월15일 추가 - 이분 반도 못하셨다고 합니다


쿼드콥터 제작기 00

Posted by dw0rdptr
2015. 5. 2. 02:47 IoT/QuadCopter

중간고사도 끝나서 전부터 생각해뒀던 라즈베리파이 쿼드콥터를 만들어보려고한다


필요한 부품 

컨트롤보드(라즈베리파이2,아두이노 쉴드 Rpino)

프레임(550mm 카본프레임)

BLDC 모터

ESC(변속기)

파워분배기

배터리(4000mah 이상으로 예정),배터리 충전기

프로펠러(10x4.7프롭)

가속도, 자이로센서(MPU-9250 or GY-86)

카메라 모듈(추후 추가예정)

-------------------------

BEC : 구상하면서 떠오른 건데 컨트롤보드에 전원공급은 어떻게하지 생각했었다. 찾아보니 ESC의 전원핀을 연결하면 된다고 한다. 하지만 출력을 급격히 높힐 때 등 배터리 사용이 많아지면  ESC가 컨트롤 보드로 전원을 제대로 공급해 주지 못한다고 해 따로 배터리와 컨트롤보드를 직접 연결해주는 BEC를 사용하는게 더 낫다고는 한다.


자세제어 알고리즘을 직접 구현해볼 생각이다(물론 여기저기 참고해서) 스마트폰이나 태블릿으로 조종할 예정이고 통신은 블루투스로 생각중인데 100m 통신거리가 조금 짧은 것 같아서 지그비도 고려중

필요한 기본지식부터 찾아봤는데 알아야할게 너무 많은것같다.. 시간여유는 많으니 천천히 배워가면서 해야겠다


필요한 부품 대부분은 하비킹이랑 이베이에서 구입할 예정. 국내사이트랑 비교해봤는데 가격이 싸다 관세, 배송비를 감안해도 싼편



찾아보니 라즈베리파이는 클럭수가 높아 연산은 빠르지만 센서값을 받아오고 모터를 제어하는 데는 아두이노가 좋아 최소 3ms 주기로 자세제어를 해야하는 멀티콥터 등에는 아두이노를 많이 쓰는 것 같다

하지만 영상처리를 하려면 아두이노로는 턱없이 부족하다. 그래서 라즈베리파이2+아두이노 Rpino 조합을 쓰려고 한다.



* 아두이노와 라즈베리파이의 차이점

요약 (3:00부터) - 아두이노는 '제어'에 특화된 보드. 라즈베리파이는 '처리'에 특화된 보드.

모터를 제어하는 멀티콥터에는 아두이노가 더 적합



** 쿼드콥터 스펙계산

http://www.ecalc.ch/xcoptercalc.php?ecalc&lang=en



[LOB] zombie_assassin -> succubus

Posted by dw0rdptr
2015. 4. 30. 16:38 System/LOB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
        The Lord of the BOF : The Fellowship of the BOF
        - succubus
        - calling functions continuously 
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <dumpcode.h>
 
// the inspector
int check = 0;
 
void MO(char *cmd)
{
        if(check != 4)
                exit(0);
 
        printf("welcome to the MO!\n");
 
    // olleh!
    system(cmd);
}
 
void YUT(void)
{
        if(check != 3)
                exit(0);
 
        printf("welcome to the YUT!\n");
        check = 4;
}
 
void GUL(void)
{
        if(check != 2)
                exit(0);
 
        printf("welcome to the GUL!\n");
        check = 3;
}
 
void GYE(void)
{
    if(check != 1)
        exit(0);
 
    printf("welcome to the GYE!\n");
    check = 2;
}
 
void DO(void)
{
    printf("welcome to the DO!\n");
    check = 1;
}
 
 
 
main(int argc, char *argv[])
{
    char buffer[40];
    char *addr;
 
    if(argc < 2){
        printf("argv error\n");
        exit(0);
    }
 
    // you cannot use library
    if(strchr(argv[1], '\x40')){
        printf("You cannot use library\n");
        exit(0);
    }
 
    // check address
    addr = (char *)&DO;
        if(memcmp(argv[1]+44, &addr, 4!= 0){
                printf("You must fall in love with DO\n");
                exit(0);
        }
 
    // overflow!
    strcpy(buffer, argv[1]);
    printf("%s\n", buffer);
 
    // stack destroyer
    // 100 : extra space for copied argv[1]
    memset(buffer, 044);
    memset(buffer+48+10000xbfffffff - (int)(buffer+48+100));
 
    // LD_* eraser
    // 40 : extra space for memset function
    memset(buffer-300003000-40);
}
cs

소스가 길어졌다... 힌트를 보면 calling functions continuously, 함수 연속호출을 뜻하는것 같다


전역변수로 check를 선언한다

공유라이브러리를 사용할 수 없고, ret가 함수 DO의 주소가아니면 종료해버린다.

DO,GYE,GUL,YUT,MO를 연속적으로 호출해 함수MO의 system함수로 쉘을 실행시키자


ret에 DO의 주소를 덮으면 DO가 호출된다. ret로 호출된 함수는 그 함수의 ret가 생성되지 않기 때문에 바로 다음함수인 GYE의 주소를 덮어쓴다. 이런식으로 먼저 MO까지 호출해보자


DO : 0x80487ec
GYE : 0x80487bc
GUL : 0x804878c
YUT : 0x804875c
MO : 0x8048724

-> gdb로 구한 함수의주소

[ buffer+sfp(44bytes) ][DO()][GYE()][GUL()][YUT()][MO()]


MO까지 성공적으로 호출했다. MO는 *cmd를 인자로 받는데 공유라이브러리를 쓰지 못하니 argv[1]에 /bin/sh를 쓰고 주소를 구해 전달하자

[ buffer+sfp(44bytes) ][DO()][GYE()][GUL()][YUT()][MO()][dummy(4bytes)][&/bin/sh][/bin/sh]


먼저 core를 떨어트려 주소를구하자

[ buffer+sfp(44bytes) ][DO()][GYE()][GUL()][YUT()][MO()][AAAA][BBBB][CCCC]

/bin/sh 가 들어갈 주소인 0xbffffa68이 $/bin/sh이다


페이로드와 Password



'System > LOB' 카테고리의 다른 글

[LOB] nightmare -> xavious  (1) 2015.06.27
[LOB] succubus -> nightmare  (0) 2015.06.01
[LOB] assassin -> zombie_assassin  (0) 2015.04.18
[LOB] giant -> assassin  (0) 2015.04.14
[LOB] bugbear -> giant  (2) 2015.04.14