INFioT JAVA SDK 사용법

INFioT는 장치 개발자 용 SDK의 C 및 JAVA 버전을 제공합니다 "https://infiot

lgcnscom/"에 연결하십시오 먼저 로그인을 해주세요 "지원"을 클릭하십시오 "다운로드"를 선택하십시오

"SDK 다운로드"를 선택하십시오 INFioT SDK for Java 개발자를 다운로드 할 수 있습니다 infiot_device_java_sdk_10zip을 다운로드했습니다

압축 파일을 압축 해제하십시오 압축 파일의 압축을 풀 때 maven에서 제공 한 샘플 프로젝트 (UseCase)와 샘플 프로젝트를 사용하는 local_repositoryzip 파일을 확인할 수 있습니다 Eclipse를 실행할 준비가되면 Eclipse를 실행하십시오 내가 사용하고있는 Eclipse 버전을 공유 할 것이다

스프링 도구 모음 버전 394를 사용하고 있습니다 이제 프로그램을 닫으십시오 Eclipse를 사용하기 전에 다운로드 한 샘플 프로젝트를 복사하십시오

Eclipse에서 사용중인 작업 공간으로 이동하십시오 기존 프로젝트를 삭제합니다 한 번 더 보여줘 프로젝트를 붙여넣고 UseCase를 다음과 같이 추가하십시오 UseCase를 추가 한 후, 식 Eclipse에서 제공하는 샘플 프로젝트를 가져옵니다

필요한 부품을 수정하고 제작하는 과정을 계속 진행하십시오 마우스 오른쪽 버튼을 클릭하고 "import"를 선택하면, Maven의 기존 Maven 프로젝트가 표시됩니다 프로젝트를 선택하십시오 "다음"을 클릭하십시오 루트 디렉토리로 이동 작업 영역에서 "UseCase"를 선택하십시오

프로젝트가 제대로 추가되었는지 확인하려면 "완료"버튼을 클릭하십시오 UseCase를 사용하지 않도록 선택할 수 있습니다 그리고 직접 maven 프로젝트를 만들어 개발을 진행하십시오 그러나이 경우에는이 부분을 놓치지 않도록주의하십시오 먼저

프로젝트를 만든 후 pomxml 파일을 엽니 다 종속성 및 저장소 부분을 그대로 복사하십시오 복사가 끝나면, 당신의 maven 프로젝트 아래에 local_repository 파트를 복사하고 그대로 사용하십시오 내부 local_repository는 장치 SDK 1

0 jar 파일입니다 우리는 pom을 사용하여이 개발에 필요한 종속 라이브러리와 관련된 항목을 관리합니다 pom을 처음 수정할 때 추가 된 부분을 사용하여 관리되는 pom을 maven 업데이트로 일괄 적으로 업데이트 할 수 있습니다 두 작업이 완료되면, "UseCase"를 선택하십시오 마우스 오른쪽 버튼을 눌러 메이븐의 "프로젝트 업데이트"를 선택하십시오

이것을 선택하면 중요한 부분이 나타납니다 "스냅 샷 / 릴리즈 강제 업데이트"를 선택하십시오 그런 다음 확인을 누릅니다 Maven이 업데이트 중입니다 Maven 종속성에있는 device-sdk-1

0jar 파일을 개발하는 동안 사용 된 종속성 부분을 가져 왔는지 확인할 수 있습니다 이것이 일어날 때, SDK를 작성할 준비가 된 환경이 있습니다 준비가 되었다면, 샘플 코드를 살펴 보겠습니다 UseCase 아래에 UseCase1

java 파일이 있습니다 이 파일에서, 우리는 InfiotService 객체를 만들고, 생성 된 객체로부터 센싱 데이터를 전송하기위한 speedSensorPath를 검색하고, 그런 다음 두 번째 countSensorPath를 검색합니다 검색된 패스는, 최초의 infiotInsertData 메소드의 최초의 파라미터에 격납됩니다 두 번째로 임의의 더미 데이터를 전송합니다 숫자를 바꾸자

나는 그들을 150과 280에 세울 것이다 탑승자의 수가 30 명과 10 명이라고 가정 해 보겠습니다 다음으로해야 할 일은 configproperties 파일을 만드는 것입니다 Resource 폴더 아래에 config

properties 파일을 작성하십시오 장치 ID 저장 장치의 등록 키 저장 센서의 메타 데이터 ID 저장 버스의 자원 이름을 저장하십시오 이 정보를 얻을 수있는 곳이 궁금 할 것입니다 이전 프로세스를 통해 장치를 등록했습니다 등록 된 장치를 확인하려면, 개발자 포털에서 "Experience"를 선택하십시오

그런 다음 "등록 장치"를 클릭하여 등록 된 장치를 확인하십시오 장치 등록 프로세스를 진행하지 않은 경우, 등록 장치 비디오를 다시 참조하고 장치를 등록하십시오 이미 등록 된 "LG BUS TEST"라는 장치의 정보를 확인해 봅시다 확인할 기기 세부 정보보기 장치 아이디 장치 등록 키 리소스 이름 메타 데이터 ID 이제 방금 작성한 configproperties 파일을 살펴 보겠습니다

화면 레이아웃을 절반으로 나눕니다 장치 ID 부분은 다음과 같이 나타납니다 장치 ID 복사 기기 ID 붙여 넣기 장치 등록 키를 복사하여 deviceEnrollmentKey에 붙여 넣으십시오 마찬가지로, "Resource Name"을 복사하여 resourceName에 붙여 넣으십시오 하단의 센서 데이터에 해당하는 메타 데이터 ID를 복사합니다

먼저 속도 센서를 복사합니다 둘째, 주행 감지 센서를 복사합니다 이런 방식으로 복사하면, INFioT 개체가 생성되는 동안, configproperties 파일이 읽혀집니다 메타 데이터 ID 정보는 getContainerPath를 통해 검색 할 수 있습니다

그런 다음, 우선, 0 번째 배열은 속도 센서의 경로입니다 첫 번째 배열은 탑승자 센서의 정보 다음으로 우리는 두 개의 속도 데이터와 두 명의 점유자 데이터를 INFioT 서버에 보냅니다 INFIOT 서버에 데이터가 제대로 등록되어 있는지 확인하십시오 "useCase"를 선택하십시오 오른쪽 클릭 버튼을 누릅니다

"Run As"에서 Java Application을 선택하십시오 "확인"을 클릭하십시오 저장해 시작하다 순차적으로 로그 파일이 나타납니다 여기 화면에, 이 방향으로가는 화살표가있는 부분 (<<)은 서버에서받은 부분입니다

이 부분 (>>)은 우리가 요청한 부분입니다 데이터 삽입이 완료되면, 장치로부터 전송 된 센서 데이터가 서버에 삽입 된 경우, 우리는 로그에 "데이터 삽입 완료"를 볼 수 있습니다 이 경우 INFIOT 서버로 센서 데이터를 전송하는 작업이 완료되었습니다 작업이 완료되면 서버의 데이터를 확인하십시오 INFioT 개발자 포털에 다시 액세스하면, "Experience"에 대한 장치 데이터를 선택합시다

장치 데이터에서 장치 모델명을 선택하고 선택한 LG BUS TEST 및 메타 데이터 속도 정보를 확인하십시오 View를 사용하여 이전에 누적 된 데이터와 방금 전송 한 데이터가 정상적으로 도착했는지 확인하십시오 이전에 입력 한 속도 데이터는 150과 280로 올바르게 저장되었습니다 30 및 10에 대응하는 카운트 정보가 적절히 저장되었다

[Fusetools]퓨즈 스터디를 원하다[Wonhada] – 06. 자바스크립트 01 (변수, 조건, 반복)

안녕하세요 원하다닷컴의 원강민입니다

이번 시간에는 자바스크립트에 대해서 알아보겠습니다 여기 보시는 것처럼 자바스크립트는 퓨즈의 비즈니스 로직을 구현하기 위해 사용하는 언어입니다 비즈니스 로직이란 텀즈와 위키백과에서 이렇게 정의하고 있습니다 비즈니스 로직에 대한 정의는 사람마다 다르고 또 플랫폼마다 다르기 때문에 이 내용을 가지고서 참고하시기 바랍니다 퓨즈의 경우 비즈니스 로직은 UI를 제외한 나머지라고 볼 수 있습니다

UI는 UX라고 불리는 XML을 이용하고 그 외의 부분은 자바스크립트로 처리합니다 현재 퓨즈는 ES6 즉, ECMAScript 6를 지원합니다 ES6는 ES2015라고도 불립니다 직접 코딩하면서 자바스크립트에 대해 알아보겠습니다 자바스크립트를 알아보기 위해서 JavaScript 태그를 만들겠습니다

자바스크립트는 UI가 아니기 때문에 콘솔창에서 확인할 것입니다 consolelog를 찍고서 이렇게 할 수 있습니다 저는 consolelog가 길기 때문에 log라는 변수에 console

log를 담아보겠습니다 이와 같이 하여도 동일하게 적용됩니다 우선 변수에 대해서 알아보겠습니다 자바스크립트의 변수는 var 라고 하는 키워드가 있습니다 그런데 ES6부터는 let이라는 키워드와 const라고 하는 키워드가 더 추가되었습니다

처음 하시는 분들은 그냥 var와 let과 const라는게 있다고 알아두시면 될 것 같습니다 차이점에 대해서 알아보겠습니다 var는 이렇게 하고 저장해 보겠습니다 22라고 나옵니다 즉, 11이라고 하는 숫자를 a라고 하는 변수에 넣고 다시 a에 22를 다시 넣어서 그 변수의 값을 바꿉니다

이렇듯이 어떤 데이터를 지칭하는 이름이라고 생각할 수 있습니다 그러면 let과 const는 어떻게 다른지 알아보겠습니다 우선 const를 해보겠습니다 저장하면 다음과 같이 에러가 나옵니다 그 이유는 const라고 된 것은 이 변수에 다른 값을 다시 넣지 못하는 것입니다

이 부분을 주석 처리해 보겠습니다 저장하면 수정되었다고, 고쳐졌다고 나옵니다 즉, const는 바꿀 수 없는 값입니다 그것을 상수라고 부릅니다 이번에는 let을 해보겠습니다

let도 동일하게 22가 나왔습니다 var와 let은 거의 같습니다 하지만 차이점이 하나 있습니다 예를 들어서, 동일하게 var라고 하는 변수를 넣었을 때 22가 나왔습니다 하지만 처음에 let으로 변수를 만들었다면

저장하면, 다음과 같이 에러가 나옵니다 그 이유는 이미 변수가 정의되어 있기 때문에 다시 정의할 수 없다는 것입니다 이와 같이 let은 좀 더 엄격합니다

그래서 실수하지 않기 위해서 let을 사용하는 것을 권장합니다 조금전에 알아봤던 const의 경우 이와 같이, 배열을 사용하게 되면 그 배열 자체를 바꿀 순 없습니다 즉, 이와 같이 사용하면 에러가 납니다 하지만, 배열의 요소에 접근하는건 가능합니다 요소를 변경해 봅니다

에러가 사라졌습니다 즉, 배열을 사용하는 경우에는 const로 정의하는 것이 안전합니다 기억할 것은, 변수는 var와 let과 const가 있다는 것입니다 이번에는 조건문에 대해서 알아보겠습니다 조건이라고 하는 것은 무언가를 할 때 혹은 하지 않을 때와 같은 우리가 흔히 얘기하는 조건과 같은 의미입니다

예제를 하나 만들어 보겠습니다 mathrandom을 이용해서 0 이상 1 미만의 임의의 수를 가져옵니다 거기에 10을 곱하고 mathfloor라고 하는 것으로 절삭해주면 0부터 9까지의 값이 나옵니다

이것을 이용해서 얻어진 결과가 짝수이면 짝수라고 출력하고 홀수이면 홀수라고 출력하는 조건문을 만들어 보겠습니다 i를 2로 나눈 나머지가 0이라면 짝수라고 출력합니다

그게 아니라면 홀수라고 표기합니다 자바스크립트에서는 같다는 표시를 이퀄 두 개를 쓸 수 있지만, 정확하게 하기 위해 세 개를 쓸 수도 있습니다 저장해 보면 홀수입니다 그 값을 알기 위해서 i를 찍어보겠습니다 3은 홀수입니다

한번 더 해보겠습니다 9도 홀수입니다 4는 짝수입니다 이와 같이 조건을 통해서 실행되는 코드를 달리할 수 있습니다 지금 이 코드는 조금 줄여쓴 것인데, 원래는

이와 같이 또 이와 같이 브레이스({ })를 이용해서 구간을 정해줄 수 있습니다 다만, 한 줄일 경우 이와 같이 줄여쓰기도 합니다 지금은 이 경우와 그렇지 않은 경우에 대해서만 출력했지만 다른 경우가 있을 수 있습니다

예를 들면 이와 같이 3 미만이라면 001, 또는 3 이상부터 6 미만이라면 002, 그 나머지 값들은 003을 찍도록 했습니다 실행해 보겠습니다 2는 짝수입니다 그리고 2는 3 미만이기 때문에 001 이라고 나왔습니다 다시, 0은 짝수고 001 입니다

5는 홀수고, 002 입니다 3 이상, 6 미만이기 때문입니다 이와 같이 여러개의 조건일 경우 else if 구문으로 사용할 수 있습니다 이번에는 반복문에 대하여 알아보겠습니다 반복이라는 말은 여러번을 한다는 뜻입니다

반복을 위해서는 for 구문을 사용합니다 이와 같이 i를 출력해 보겠습니다 2부터 9까지가 출력이 되었습니다 여기 안에다가 하나의 반복문을 더 넣어보겠습니다 이번에는 j라는 이름으로 넣겠습니다

이 값을 1부터 9까지로 만들고, 여기다가 넣어보겠습니다 이 내용은 지우고요 그러면 i, x 곱하기 입니다 j i 곱하기 j, 실행하면 뭐가 나올까요? 구구단 입니다 이와 같이 2단부터 9단까지, 2 곱하기 1부터 2 곱하기 9까지 이런식으로 쭉 출력할 수 있습니다

이렇게 숫자 혹은 어떤 조건을 계속해서 반복하는걸 반복문이라고 합니다 while 문에 대해서 알아보겠습니다 while 문은 어떤 조건일 때 계속해서 반복하는 것입니다 예를 들면, 이런 것입니다 카운트(cnt)라고 하는 변수에 1을 주고, while 문에 카운트가 10 미만인 경우에 카운트 값을 찍습니다

그리고 카운트를 1씩 증가시키면 저장해 보겠습니다 1부터 9까지 반복됩니다 즉, 처음에 들어온 값이 1이고, 10보다 작기 때문에 출력을 하고 하나 증가시킵니다 그런 방식으로 계속해서 돌다가 마지막에 10이 되고 10은 10 미만이 아니기 때문에 바깥으로 빠져 나갑니다 이곳에 이와 같이 로그를 찍으면 마지막에 10이 되어서 완료된 것을 볼 수 있습니다

while 문의 경우, 조건이 잘못되면 무한정 루핑되는 상황이 생길 수 있습니다 즉, 어떤 조건이 항상 true인데 이와 같이 그 true인 값을 while문에 넣게 되면 계속해서 출력되면서 멈추지 않는 현상이 발생합니다 이렇게 계속 돌게 되고, 프로그램은 정지가 된 것처럼 보입니다 더 이상 사용할 수 없게 되는거죠 이 부분을 조심해야 합니다

다음 시간에는 함수, 모듈, 옵저버블에 대해서 알아보겠습니다 감사합니다

jnizz(Android application fuzzer framework using JNI spoofing) 시연 영상

jnizz를 이용한 간단한 퍼저 제작 실습을 보여드리겠습니다 기존에 아무 파일이 없는 디렉토리를 확인할 수 있습니다 "init" 명령을 통해 새로운 퍼저 프로젝트를 생성할 수 있습니다 새롭게 프로젝트 디렉토리가 생성된 것을 확인할 수 있습니다 이번엔 "add-apk" 명령을 통해 퍼징할 apk를 관리할 코드를 생성해줍니다 입력한 apk이름의 새로운 소스 파일이 생성된 것을 확인할 수 있습니다 이제 apk관리 소스 코드를 수정합니다 퍼징할 apk파일이 있는 경로로 코드를 대체해줍니다 다음으로 runpy를 수정합니다 방금 제너레이팅 되었던 apk 클래스를 임포트해줍니다 그 후 객체를 하나 생성해줍니다 이 객체는 생성됨과 동시에 경로에 있는 apk파일을 분석할 것입니다 분석한 뒤 해당 apk에서 사용하는 JNI 함수를 이용하여 JNI call을 흉내내는 퍼징용 apk를 만들어낼 것입니다 이렇게 만들어진 퍼징용 apk와 분석된 함수 명세로 avdmanager 객체를 생성합니다 간단한 run

py 수정이 완료되었습니다 이제 runpy를 실행하여 퍼징을 실시합니다 1 먼저 apk를 분석하여 JNI call 이루어지는지 확인합니다 2 이를 기반으로 퍼징용 apk를 빌드합니다 3 빌드가 완료되면 퍼징용 샌드박스가 되는 안드로이드 이미지를 생성합니다 4

또한 대시보드가 활성화 돼 퍼징 상태를 간단히 확인할 수 있습니다 5 이제 안드로이드 VM을 올립니다 6 안드로이드 VM에 랜덤 input 생성기, 동작할 쉘 스크립트를 주입합니다 이러한 쉘 스크립트 역시 JNI 함수 명세에 맞게 자동으로 제너레이팅 됩니다 7 그 후 생성된 퍼징용 apk를 설치하여 줍니다 첫 구동에는 컴퓨터 성능에 따라 다소 시간이 소요됩니다 8 모든 구동이 완료되었으므로 이제부터 본격적인 퍼징이 시작됩니다 퍼징용 apk가 크래시가 날 때마다 CLI와 대시보드에서 바로 확인을 할 수 있습니다 방금 첫 크래시가 발생하였습니다!! 또 한 번의 크래시가 발생하였습니다!! 이런 식으로 퍼저는 계속해서 크래시를 쌓아나갈 것입니다 퍼징을 시작한지 5분 정도가 지났으므로 어떤 크래시들이 쌓였나 확인해보도록 하겠습니다 9

crash table에서 크래시들을 한눈에 파악할 수 있습니다 10 또한 각 크래시들마다 Exploitable Level을 확인할 수 있습니다 이러한 Exploitable Level은 생성된 Tombstone을 분석하여 eip의 값이나 fault 종류를 보고 파악합니다 11 퍼저를 종료하면 Tombstone 파일을 프로젝트 디렉토리에 저장해줍니다 그동안 발생했던 크래시들에서 생성된 톰브스톤들을 확인할 수 있습니다 그 중 하나를 열어보겠습니다 12 어떤 함수에 어떤 인자를 넣었을 때 발생한 크래시인지 알 수 있고 각 레지스터의 값들을 알 수 있습니다 여기까지 jnizz를 활용한 간단한 퍼저 제작 시연이었습니다 감사합니다

Multi Chatting App

멀티 채팅 프로그램 시연 1 프로그램 소개 2

시스템 구성 3 시연 3-1 서버 동작 및 종료 3-2 클라이언트 접속 및 채팅 #클라이언트1 접속 #접속 시 채팅 창 확장 #클라이언트2 접속 #클라이언트3 접속 #채팅 메시지 전달 및 수신 #스크롤 기능 #출력 창 초기화 기능 # 클라이언트 접속 종료 #서버 접속 종료 3-3 메시지 DB 저장 및 출력 시연을 마치겠습니다

감사합니다