리눅스 왕초보 시절, 터미널에서 프로세스를 종료하기 위해 Ctrl+Z을 눌러본 적이 있는지...?

본인은 심지어 Ctrl+ZCtrl+C를 번갈아가며 연타했었다.


지금은 이 두 단축키의 차이점을 구분하며 사용하고 있다.


Ctrl+C : 프로세스 종료

Ctrl+Z : 프로세스 정지 (Stop)


종료된 프로세스는 다시 살릴 수 없지만,

정지된 프로세스는 다시 재개할 수 있다.


예를 들어, Ctrl+Z를 눌러 프로그램을 정지 시키면 아래와 같은 화면을 볼 수 있는데,


[3]처럼 괄호 안에 있는 숫자를 'fg % '뒤에 써주면 재개할 수 있다.

주의  fg % 3 사이에 white space를 넣어주어야 한다. fg%3이라고 입력시에는 리눅스가 못알아듣는다.

참고 fg는 foreground의 축약이다.


위와 같은 내용을 깊이있게 이해하기 위해서는

프로세스의 주기와 background, foreground의 개념에 대해 알아야 하는데, 이 포스팅에서는 다루지 않는다.

Python에서 Base64로 encoding/decoding 하기


Base64 Encoding

import base64

s_b64 = base64.encodestring(s)





Base64 Decoding

import base64

s = base64.decodestring(s_b64) 


문제 상황


예를들어...


서버에 여러 문서들이 있고, 이 문서들의 id값은 0001~9999처럼 숫자로 이루어져 있다.

접근할 수 있는 url은 abc.com/doc/{id} 형태이다.


유저A에게 url을 직접 알려주는 방식으로, 오직 0001번 문서에만 접근하도록 하고 싶다.

그래서 abc.com/doc/0001이라는 url을 알려주었는데, 이 똑똑한 유저A가 url을 변경하여 abc.com/doc/0002에 접근해버렸다!


이렇게 다른 문서의 경로를 추측하여 훔쳐보는 경우를 방지 하려면 어떻게 해야 하는가?

즉, 파라미터를 감추려면 어떻게 해야 하는가?




해결 방법


파라미터에 대해 인코딩-디코딩, 혹은 암호화 기술을 이용한다.

다시 말하자면,

url을 생성할 때, 파라미터 원래의 값을 인코딩 혹은 암호화 해서 유저에게 제공하고,

서버는 해당 url로 접속시도가 있을 경우, 인코딩 혹은 암호화 된 파라미터를 디코딩 혹은 복호화 해서 식별한다.


예시)


기존 url: abc.com/doc/1234

인코딩/암호화 방식

결과 

변환 사이트

 Base64

 abc.com/doc/MTIzNA==

http://ostermiller.org/calc/encode.html

 Hex

 abc.com/doc/31323334

http://ostermiller.org/calc/encode.html

 MD5

 abc.com/doc/81dc9bdb52d04dc20036dbd8313ed055

암호화: http://www.md5encryption.com

복호화: http://md5decryption.com

 SHA-1

 abc.com/doc/7110eda4d09e062aa5e4a390b0a572ac0d2c0220

암호화: http://www.sha1-online.com

복호화: https://hashkiller.co.uk/sha1-decrypter.aspx




이렇게 인코딩/암호화를 하면 일반인들은 url을 보고 파라미터 추측이 불가능하다.

그러나 이 포스팅을 읽는 독자를 포함하여, 우리 엔지니어(혹은 개발자)들은

복호화를 통해 원래 값을 유추하고, 또 다른 파라미터 값을 만들어 내 다른 문서에 접근이 가능할 것이다.


그래서 이 방법은 저수준의 보안이 필요할 때만 사용하도록 하자.


LINK

Python에서 Base64 Encoding/Decoding 하기 http://cbengineer.tistory.com/4



Windows PC 응용프로그램에 지폐기를 달아야 한다.


컴퓨터공학으로 학부를 졸업하고도 순 소프트웨어적인 측면 밖에 몰라서 한참을 헤매임...


검색해보니 아두이노니, 라즈베리파이니 그런 얘기들만 나오는데,

그런쪽은 말만 들었지 한번도 접해보질 못해서 당황스러웠다....


그래서 지폐기 회사에 전화해서 물어보니, 다행히 RS232 통신을 이용하면 PC랑 직접 통신이 가능할거라고한다. RS232? 

USB가 나오기 전에 쓰던거라고 하던데, 요새 PC에는 단자도 없지 않나?

대충 검색해보니 변환 젠더가 판매되고 있는 것 같다.


일단 ok. 지폐기 먼저 구매해보고 시도해보는걸로...!






* RS232 관련 정보 (추후 상세 포스팅 예정)


시리얼 (RS232, 9핀, 직렬포트) 케이블의 단자 종류 및 특징  

http://blog.naver.com/partclub/100204067075


RS232 - USB 변환 케이블 판매처

http://www.it-story.co.kr/goods/view.php?goodsno=1005374&NaPm=ct%3Dj3zhinpk%7Cci%3Dc1568da7d5d62ad250e5ce6d858147decff78cc2%7Ctr%3Dsls%7Csn%3D289445%7Chk%3Df62de114427d6b9b6cb760b6e36a34fbbdd0c859







* RS232 관련 정보



시리얼 (RS232, 9핀, 직렬포트) 케이블의 단자 종류 및 특징  

http://blog.naver.com/partclub/100204067075




RS232 - USB 변환 케이블 판매처


http://www.it-story.co.kr/goods/view.php?goodsno=1005374&NaPm=ct%3Dj3zhinpk%7Cci%3Dc1568da7d5d62ad250e5ce6d858147decff78cc2%7Ctr%3Dsls%7Csn%3D289445%7Chk%3Df62de114427d6b9b6cb760b6e36a34fbbdd0c859


+ Recent posts