본문 바로가기

python89

Python MultiProcess Shared Object Python의 MultiProcess는 프로세스마다 독립적인 메모리를 가지고 있어, 아래와 같이 예상치 못한 결과를 받는 경우가 있다.- 원했던 결과 : 1 -> 2import multiprocessingclass a: def __init__(self): self.classb = b() mp1 = multiprocessing.Process(target=self.mp_start, args=()) mp1.start() mp2 = multiprocessing.Process(target=self.mp_start, args=()) mp2.start() mp1.join() mp2.join() def mp_start(s.. 2024. 5. 29.
[MAC] PKG로 설치한 Python 2.7 삭제하기 삭제 방법 /System/Library 내 Apple에서 제공하는 Python을 삭제할 경우 운영 체제에 손상이 발생할 수 있으며, 아래의 방법은 Apple에서 제공하는 Python 2.7에는 영향을 주지 않은 방법입니다. (다른 버전의 경우 버전을 뜻하는 2.7 문자열만 변경하여 사용하면 될 것 같습니다) 1. Python 2.7 Framework 제거 $ sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7 2. Python 2.7 Directory 제거 $ sudo rm -rf "/Applications/Python 2.7" 3. /usr/local/bin 내 Python 2.7를 가르키는 심볼릭 링크 제거 $ cd /usr/local/bin.. 2022. 11. 29.
Python을 이용한 OTP 생성 (pyotp) Python에서 pyotp Module을 이용하여 OTP(One Time Password)를 생성할 수 있는데 OTP에는 HOTP와 TOTP라는 2가지 방식이 존재합니다. HOTP (HMAC Based One Time Password) : 숫자 값을 기준으로 OTP 생성 TOTP (Time Based One Time Password) : 시간 값을 기준으로 OTP 생성 여기서는 Python의 pyotp를 이용하여 TOTP를 생성하였습니다. 1. pyotp 설치 $ pip install pyotp 2. OTP 생성 방법1 ※ 기본 설정으로 30초 단위로 6자리의 OTP가 변경됨 import pyotp import time import base64 otp_key = base64.b32encode("test".. 2022. 10. 19.
[Python] SQLite3 사용 방법 sqlite3 모듈 사용 import sqlite3 메모리를 이용한 Database 사용 con = sqlite3.connect(":memory:") Database File 사용 con = sqlite3.connect('./database.db') Table 생성 cur = con.cursor() cur.execute("CREATE TABLE TestTable(Data1 TEXT, Data2 INTEGER);") Data 삽입 cur = con.cursor() cur.execute("INSERT INTO TestTable(Data1, Data2) VALUES('Test', 1);") cur.execute("INSERT INTO TestTable(Data1, Data2) VALUES(?, ?);",(te.. 2022. 9. 17.
[Python] 리스트 내 문자열이 특정 문자열 내에 존재하는지 비교 코드 사전 정보 any() : 인수로 전달된 자료형 중 True가 하나라도 포함되어 있을 경우 True를 반환하는 함수 >>> any([False,False,False]) False >>> any([False,False,False,True]) True 문자열과 리스트 비교 코드 1. 리스트 내 문자열이 단 하나라도 존재하는지 비교 코드 >>> str_list = ["aaa", "bbb", "ccc"] >>> str1 = "Hellow World" >>> if any(str in str1 for str in str_list): print("Find") ... >>> str1 = "Hellow World aaa" >>> if any(str in str1 for str in str_list): print("Find.. 2022. 9. 9.
[Python Scapy] 3Way Handshake 시 RST를 자동으로 보내는 문제 해결 3way Handshake를 위해 Python의 Scapy Module로 SYN을 보내게 되면 서버로부터 SYN+ACK 응답을 받을 수 있는데 이때 OS에서 자동으로 RST를 보내 연결 작업을 끊어버립니다. 이에 대한 명확한 이유를 찾을 수는 없었는데, OS에서 예상하지 못한 3Way Handshake가 발생하면 자동으로 RST를 보내 연결을 끊어버리는 건 아닐까?라는 생각이 들었습니다. 이에 대한 우회 방안으로는 iptables을 이용하여 RST가 전송되지 못하도록 막는 방법이 있는 것 같습니다. (스마트하지 못한 방법.. ㅠㅠ) $ sudo iptables -A OUTPUT -p tcp --tcp-flags RST RST -s IP -j DROP 여담이지만, Python의 Scapy보다 C++의 Ne.. 2022. 8. 23.
Python을 통한 Simple HTTPS Server 구축 HTTPS Server를 구축하기 위해서는 인증서가 필요한데, 이 인증서는 openssl를 통하여 생성 가능합니다. $ openssl genrsa -out CA.key 2048 $ openssl req -x509 -new -nodes -key CA.key -days 3650 -out CA.pem $ openssl genrsa -out server.key 2048 $ openssl req -new -key server.key -out server.csr $ openssl x509 -req -in server.csr -CA CA.pem -CAkey CA.key -CAcreateserial -out server.crt -days 3650 Python Simple HTTPS Server Code import h.. 2022. 8. 22.
[Python Scapy] ARP Spoofing 구현 ARP Spoofing ARP Spoofing이란 ARP(Address Resolution Protocol)를 이용하여 공격 대상에게 공격자를 Gateway와 같은 다른 대상으로 속여 중간에서 패킷을 가로챔으로써 도청하거나 조작이 가능한 공격 입니다. ARP란 대상 IP를 기반으로 MAC 주소를 획득할 수 있도록 도와주는 역할을 하고 있으며, Layer 2(L2, Data Link layer)에서 통신을 할 때 MAC 주소를 사용하기 때문에 매우 중요한 역할을 담당한다고 볼 수 있습니다. 이렇게 중요한 ARP에서 ARP Spoofing 공격이 가능한 이유는 ARP가 설계된 지 오래되었기 때문에 설계 상의 치명적인 문제를 갖고 있기 때문입니다. 그것은 바로 자신의 MAC 주소를 알리는 ARP Frame을 .. 2022. 8. 21.
Django란? Django는 2005년부터 시작된 Python의 오픈 소스 웹 프레임워크이자 풀 스택 프레임워크 입니다. 웹 프레임워크는 크게 풀 스택 프레임워크와 마이크로 프레임워크로 나눠지는데, 풀 스택 프레임워크는 "웹 개발에 필요한 모든 요소를 갖춘 프레임워크"이며, 마이크로 프레임워크는 "웹 개발에 필요한 일부 요소가 구현되어 있지 않은 프레임워크" 입니다. ※ Python 기반의 마이크로 프레임워크 중 대표적인 것은 Flask가 있으며, 일부 요소가 구현되어 있지 않기 때문에 반대로 개발자의 능력과 목적에 맞춰 커스텀이 가능한 부분이 있습니다. 또한, Django의 경우 ORM(Object Relational Mapping)을 기본적으로 제공하고 있는데요. ORM이란 객체와 관계형 데이터베이스의 데이터를 자.. 2022. 7. 10.