xxd 유틸리티를 쓰면 된다



예시

위와 같은 내용의 파일 flasher.bin을 header file로 만들어서 include 하고 싶을 경우

xxd -i flasher.bin > flasher.h



확인

사이즈랑 변수랑 정확하게 생성된 것을 볼 수 있다



윈도우에서는 어떻게 하냐고?

cgwin 같은곳에 xxd가 윈도우용으로 포팅된게 있는거 같다

'devel > etc' 카테고리의 다른 글

연산자 우선순위 헷갈리기 쉬운 예제  (0) 2016.08.11
volatile 극혐  (0) 2016.07.11
/proc/config.gz 활성화 안될 때  (0) 2016.04.22
bash 쉘 오른쪽에 시간 표시하기  (0) 2016.04.22
git stash, pull, checkout 삽질  (0) 2016.04.19
Posted by 쵸코케키



General setup 

-> Kernel .config support

-> Enable access to.config through /proc/config.gz


이 두가지를 동시에 활성화 해야 한다

만약 Kernel .config support가 *가 아닌 M으로 되어 있다면


modprobe configs 를 해야 접근이 가능하다

ls /proc/config.gz




'devel > etc' 카테고리의 다른 글

volatile 극혐  (0) 2016.07.11
바이너리 파일을 C 헤더 파일로 만들기  (0) 2016.07.11
bash 쉘 오른쪽에 시간 표시하기  (0) 2016.04.22
git stash, pull, checkout 삽질  (0) 2016.04.19
cscope  (0) 2016.04.11
Posted by 쵸코케키


참 신기방기 하다 :)

/usr/bin/ 같은데 넣어버리면 굳




http://mina86.com/p/bash-right-prompt/


Posted by 쵸코케키

git branch 만들고 merge하고 윈도우 + linux에서 이거저거 동시에 하다보니 뭔가 꼬인듯

아마 여러명이서 개발할 때 충분히 가능한 상황

a파일을 1번 컴터에서 수정했는데 이미 2번 컴터에서 수정해서 커밋, 푸쉬까지 완료

1번 컴터의 소스들을 날릴 수도 없고(pull), 그렇다고 푸쉬할 수도 없다


*** 오류 상황

> git pull

There is no tracking information for the current branch.

Please specify which branch you want to merge with.

See git-pull(1) for details

    git pull <remote> <branch>


If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> master


> git revert source.c

fatal: bad revision 'source.c'


*** 해결 단계 #1

> git stash 

Saved working directory and index state WIP on master: 8d8f07c 어쩌고 저쩌고 커밋 주석들

HEAD is now at 8d8f07c 커밋 주석들

잠시 인벤에 넣어둘 수 있는 기능이라칸다


> git stash show

source.c | 2 +-

1 file changed, 1 insertion(+), 1 deletion(-)


> git pull

Updating 8d8f07c..62acd07

+-+_+_+_+_

pull이 된다, 2번 컴터로 작업한 데이터가 고스란히 복구 되었다




*** 오류 상황

> git stash pop

Auto-merging source.c

CONFLICT (content): Merge conflict in source.c

인벤에 넣어뒀던 파일이 튀어나오고 오토머징 된다

복구 해놨더니 stash pop 해서 파일이 1번 작업물과 2번 작업물이 섞였다


> git diff source.c

diff --cc source.c

index 5f69b98,f54d53e..0000000

--- a/source.c

+++ b/source.c

@@@ -1,6 -1,11 +1,17 @@@

++<<<<<<< Updated upstream

 +/**

 + *@file doxygen 주석들

 + */

++=======

+ /*

바뀐 내용들 

+ */

++>>>>>>> Stashed changes

이렇게 stash 이전/이후로 나눠서 파일에 같이 merge 되어 있다

직접 vi로 편집해도 되지만 웬지 싫었다

원복하고 싶었다



> git stash clear

일단은 주머니 초기화


*** 해결 단계 #2

> git reset HEAD source.c

Unstaged changes after reset:

M source.c


> git diff source.c

fatal: ambiguous argument 'source.c': unknown revision or path not in the working tree.

Use '--' to separate paths from revisions, like this:

'git <command> [<revision>...] -- [<file>...]'

맛감


> git checkout source.c

성공


2번 컴터로 올린 자료로 복구 되었다

Posted by 쵸코케키

2016. 4. 11. 15:32 devel/etc

cscope

#!/bin/bash

if [[ "$1" = "-R" ]]; then

rm -f cscope.out cscope.files

fi

find `pwd` -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' \

-o -name '*.s' -o -name '*.S' -o -name '*.dts' -o -name '*.dtsi' \

> cscope.files

cscope -i cscope.files



편하더라


Posted by 쵸코케키

modprobe -D snd_hda_codec_realtek

insmod /lib/modules/4.5.0/kernel/sound/soundcore.ko 

insmod /lib/modules/4.5.0/kernel/sound/core/snd.ko 

insmod /lib/modules/4.5.0/kernel/sound/core/snd-timer.ko 

insmod /lib/modules/4.5.0/kernel/sound/core/snd-pcm.ko 

insmod /lib/modules/4.5.0/kernel/sound/core/snd-hwdep.ko 

insmod /lib/modules/4.5.0/kernel/sound/hda/snd-hda-core.ko 

insmod /lib/modules/4.5.0/kernel/sound/pci/hda/snd-hda-codec.ko 

insmod /lib/modules/4.5.0/kernel/sound/pci/hda/snd-hda-codec-generic.ko 

insmod /lib/modules/4.5.0/kernel/sound/pci/hda/snd-hda-codec-realtek.ko 

이런 상황이었다

나는 마지막 파일명만 알고 싶었다

awk를 쓰려 했으나 /로 파싱한 뒤 필드 수가 일정하지 않아서 문제였다



modprobe -D snd_hda_codec_realtek | rev | cut -d '/' -f1 | rev

soundcore.ko 

snd.ko 

snd-timer.ko 

snd-pcm.ko 

snd-hwdep.ko 

snd-hda-core.ko 

snd-hda-codec.ko 

snd-hda-codec-generic.ko 

snd-hda-codec-realtek.ko 


결국 하긴 했는데 뭔가 개운치 않다 rev도 두번이나 들어가고

음......;;


'devel > etc' 카테고리의 다른 글

git stash, pull, checkout 삽질  (0) 2016.04.19
cscope  (0) 2016.04.11
android에서 wifi 비밀번호 찾는 방법  (0) 2016.04.04
android sdk manager 실행 안될 때  (0) 2016.03.31
sha 256 알고리즘 정리  (0) 2016.03.21
Posted by 쵸코케키

안드로이드에서 와이파이 연결 되어 있긴 한데 비밀번호를 잊어버린 상황일 때 비번 찾는법


루팅이 되어 있다는 가정 하에

adb shell

su root

휴대폰 화면에서 root 권한 허용창이 저절로 뜨면 ok

cd /data/misc/wifi

cat wpa_supplicant.conf


하면 psk="비번"

이런식으로 뜹니다


롤리팝 - 3.4 kernel 에서 확인

혹은 root explorer 같은거 다운 받아서 /data/misc/wifi 에 직접 가셔서 wpa_supplicant.conf 파일을 텍스트뷰어로 열어서 확인해도 됩니다



루팅 없이 하는법?

이건 일종의 취약점일 수도 있기에 허용하지 않는듯 싶네요

컴터로 휴대폰을 백업해서 그걸 또 풀고 복잡하게 하면 되기도 하는거 같은데 여기서는 다루지 않겠습니다

Posted by 쵸코케키

창이 그냥 홱 닫혀 버리고 가만히 있어도 실행이 안될 때

-> jdk 1.8 이상 설치하면 됩니다


1.7은 android.bat 파일에 직접 java 위치 설정해줘도 안되더군요



고객님 손가락 관절 보호를 위해 url까지 겁니다

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Posted by 쵸코케키

레퍼런스 문서

http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf

각 block 내용 및 W[64]의 내용들이 자세하게 나와있음

http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/SHA256.pdf

위와 비슷한 정보 

http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf



sha256은 hash 함수의 일종이다

hash 함수라는게 뭐냐면 다 알고 있겠지만 간단히 설명해보겠다


y = x + 2 이런 함수는 y를 알면 x도 알 수 있다

하지만 y = hash(x) 이런 해쉬 함수는 y를 알아도 x를 알 수 없는게 특징이다

그리고 모든 x값에 대해 각기 다른 y값을 내뱉는 특징 때문에 x가 원본임을 증명하는 일종의 시그니쳐로도 사용할 수 있다

(정확하게 말하자면 hash 함수는 단사함수가 아니다. hash collision이 있어서 다른 x임에도 같은 y값이 나오는 경우도 있다.

 hash collision을 피하기 위해선 계산을 더 복잡하게 하면 된다. 적당한 기회 비용을 두고 밀당을 해야한다는 소리)


hash 결과값은 32bit 8개를 병렬로 늘어놓은 값 

32bit x 8 = 256bit 그래서 이름이 sha256이다


원본 메세지의 각 문자(ascii 8bit)를 적당히 잘라 붙이고 쉬프트하고 and, or 등등 해서 512bit 단위의 블럭으로 만들고 이를 볶고 지져 hash를 계산한다

512bit 블럭으로 만들기 위해 크면 자르고(parsing) 모자라면 붙인다(padding)


아래의 공식에 맞춰 hash 계산에 필요한 블럭을 만든다

L + 1 + k = 448mod512


L(data length)는 hash를 만들고 싶은 원본 message의 bit길이 이므로 무조건 8의 배수이다

구현할 때 447bit 이런거 머리 빠지게 고민할 필요 없다


그리고 중요한 정보 - little endian을 기준으로 동작하도록 설계되어있다

x86, arm을 보통 사용하는 우리는 짜증나는 endian 전환을 해야 한다



실제 구현 관련 정리 - 블럭 제작 방법 및 hash 계산 방법

hash 계산 및 업데이트

간단하므로 생략, fips 문서에 나온데로 4개의 절차를 수행하면 된다(복잡해 보이는 시그마 같은거 다 문서에 잘 정의 되어있다)


메세지 길이 = len

case 1. len < 56(448bit)

마지막에 1bit를 추가하고 448bit까지 0으로 채움

그리고 마지막 64bit는 총 메세지 길이(lenx8)를 기록한다

hash 계산, 업데이트


case 2. 56 <= len < 64

마지막에 1bit를 추가하고 512bit까지 0으로 채워 block을 만든다

그리고 hash를 계산, 업데이트 한다

그리고 448bit까지 모두 0으로 채우고 마지막 64bit를 총 메세지 길이(lenx8)를 기록한다

그리고 hash 계산, 업데이트


case 3. len >= 64(512bit 이상)

512bit 씩 block으로 잘라 hash 계산, 업데이트 한다

마지막 남는 메세지는 길이에 따라 case1 혹은 case2와 동일하게 진행


last

계산한 32bit 8개의 값을 나열하면 sha256 완성



기타 유용한 참고 소스 코드

kernel 에 포함된 sha....코드.......이해하기 너무 어려움

openssl 의 crypto/sha에 있는 코드들 추천, 다만 최적화 되어있는 부분은 이해하기 힘듬

https://github.com/b-con/crypto-algorithms 매우 추천 깔끔하게 정리 되어있음



Posted by 쵸코케키

gunzip initrd.img

gzip: initrd.img: unknown suffix -- ignored


-> mv initrd.img initrd.img.gz

gunzip initrd.img.gz



어이 없게도 확장자를 바꿔야한다

확장자를 mv 명령어를 통해 .gz로 바꿔주면 쉽게 해결된다


-f나 --suffix 옵션 안 먹힌다 -.-;;

Posted by 쵸코케키
이전버튼 1 2 3 4 5 6 7 이전버튼

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
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

최근에 올라온 글

최근에 달린 댓글

글 보관함