코딩 11

pip UnicodeDecodeError 해결법

pip로 패키지 설치시 아래와 같이 UnicodeDecodeError가 발생하며 설치가 정상적으로 되지 않습니다. UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 7: ordinal not in range(128) 이럴때는 .py 파일을 수정해주면 됩니다. 1. \lib\site.py의 setencoding()함수 encoding = "ascii"를 아래와 같이 encoding = "utf-8"로 변경 def setencoding(): """Set the string encoding used by the Unicode implementation. The default is 'ascii', but if you're willing t..

코딩/Python 2020.10.22

cookie를 이용한 로그인

http://itlearner.tistory.com/293 와 http://itlearner.tistory.com/352 에서 포스팅했듯이 쿠키로도 로그인이 가능합니다. 아래는 쿠키정보를 빼내는 코드(화이트 해커를 위한 암호와 해킹 서적 참고)입니다. 이를 이용하면 세션 탈취가 가능합니다. 참고로 이러한 쿠키값 도용은 희생자가 로그인하고 있을 동안만 가능합니다. from scapy.all import * import re def cookieSniffer(packet): tcp = packet.getlayer('TCP') cookie = re.search(r'Cookie: (.+)\\r\\n', str(tcp.payload)) if cookie: print(cookie.group()) def main():..

코딩/Python 2018.07.18

살아있는 호스트 IP 스캔하기

같은 네트워크 대역에 살아있는 호스트의 IP를 스캔하는 소스를 작성해 보려고 한다. 찾아보니 방법은 아래와 같이 나왔다. 1. ping을 이용하는 방법(ICMP Echo Reply를 보내오는 호스트가 살아있는 것으로 판별) 2. 특정 포트로 메시지를 보내는 방법(Port Unreachable를 보내오는 호스트가 살아있는 것으로 판별) 이중에서 나는 ping을 이용하는 방법을 선택했다. ping을 이용하는 방법에도 찾아보니 여러가지가 있었다. 1. pyping 모듈의 ping을 이용 2. os모듈의 system을 이용 3. ICMP Echo Request 패킷을 직접 만들기 나는 이중에서 ICMP Echo Request 패킷을 직접 만들어 보기로 결정했다. 일단 참고하기 위해서 wireshark로 ping..

코딩/Python 2018.02.13

Password crack

crypt함수 crypt함수는 패스워드와 솔트 값을 받아 해시값을 생성하는 함수이다. char *crypt(const char *key, const char *salt); 생성된 해시 값의 앞 두자리가 솔트 값이다. 사용하려면 아래와 같이 crypt.h헤더파일을 추가해줘야 한다. #include 컴파일시 아래와 같이 -lcrypt옵션을 추가해야 한다. gcc -o [실행 파일명] [c 파일명] -lcrypt 솔트 값 패스워드가 같으면 해시를 적용한 결과도 같기 때문에 해결책으로 솔트 값을 넣어 다른 값이 나오도록 한다. 즉, 해쉬와 암호화에 사용되는 첨가문이다. [1] -> 인자로 패스워드와 솔트 값을 주었을 때 해시값을 생성하여 출력 #include #include int main(int argc, c..

코딩/C 2018.01.13

1의 보수와 2의 보수

음수 표현 방법- 부호절대값, 1의보수, 2의보수 - 컴퓨터는 덧셈만 할 수 있게 설계되어져 있음 그렇다면 뺄셈은? 2의 보수를 이용함 부호절대값: 8비트 이진수에서 가장 왼쪽에 있는 비트를 부호비트 0이면 양수, 1이면 음수 ex) 00000011(2) -> 3(10) 10000011(2) -> -3(10) (한 비트를 부호비트로 사용하기 때문에 8비트로 나타낼 수 있는 수가 상대적으로 적음) 표현 범위 : - (2^n - 1) ~ 2^n - 1 n의 보수: n이 되기 위해 보충해줘야 하는 수ex) 30의 100의 보수는 70 1의보수 (11111111 - 해당 수): 이진수의 각 자리 수가 1이 되기 위해 보충해줘야 하는 수 ex) 0 1 0 1 0 1 0 1 의 1의 보수는 1 0 1 0 1 0 1..

코딩/Python 2017.01.20