상황 subprocess.Popen과 subprocess.PIPE를 사용하던 중, 특정 프로세스가 생성된 후 정상적으로 동작하지 않고 좀비 프로세스가 되어 버리는 상황이 발생하였다. 예시 커맨드 및 코드 ls -alh | python test.py | python test2.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import subprocess import traceback import sys # ls -alh | python test.py | python test2.py cmd1 = ['ls', '-alh'] cmd2 = ['python', 'test.py'] cmd3 = ['python', 'test2.py'] try: p..
소스코드 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 32 33 import socket, select class SimpleServer(object): def __init__(self, host='0,0,0,0', port): self.host = host self.port = port self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((self.host, self..
문제 상황(관찰)12345678910111213141516171819user$ pythonPython 2.7.10 (default, Oct 6 2017, 22:29:07) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> import weakrefTraceback (most recent call last): File "", line 1, in File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/weakref.py", line 14, i..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
상황 : Method의 내부도 잘 동작하고, Method의 인자도 문제 없는데 해당 오류가 발생하였다. 해결 방법 : 해당 Method의 반환 값을 확인해 보도록 하자. 분기에 의해 실행이 나누어진 부분에서 return을 넣지 않아 반환 값을 받는 녀석들이 제대로 값을 반환받지 못 하여 생기는 오류였다. C 언어같은 경우, 컴파일 시에 모든 반환을 체크해주었지만, Python은 인터프리터 언어라서 생각하지 못 했던것 같다.
코드 : https://github.com/Tribal1012/mipsHex 목적 : Mips 바이너리의 어셈블리어를 IDA Python을 이용해 C언어처럼 변환시켜, 최대한 어셈블리어를 적게 보고 빠르게 분석할 수 있도록 한다. 사용 방법IDA를 켜고 mips 바이너리 열기File - Run Script - hex-ray.pymips 바이너리 경로의 함수 명과 동일한 이름의 파일 확인분석 파일별 설명(Proto version)hex-ray.py : main 함수baseasm.py : 어셈블리의 기본적인 정보를 담는 class 선언asmutils.py : 어셈블리의 기본적인 정보를 변경 또는 뽑아내고자 할 때 사용error.py : 오류 메시지 출력, assert 사용function.py : hex-ra..
python도 C 언어의 errno.h같은 모듈이 존재함 errno 리스트1234567891011121314151617181920212223import errno print errno.errorcode{1: 'EPERM', 2: 'ENOENT', 3: 'ESRCH', 4: 'EINTR', 5: 'EIO', 6: 'ENXIO', 7: 'E2BIG', 8: 'ENOEXEC', 9: 'EBADF', 10: 'ECHILD', 11: 'EAGAIN', 12: 'ENOMEM', 13: 'EACCES', 14: 'EFAULT', 15: 'ENOTBLK', 16: 'EBUSY', 17: 'EEXIST', 18: 'EXDEV', 19: 'ENODEV', 20: 'ENOTDIR', 21: 'EISDIR', 22: 'EIN..
소스코드123456def hexdump(string): for line in range(0, ((len(string)/16)+1), 1): print '%04x: ' % line + ' '.join(x.encode('hex') for x in string[(line*16):((line*16)+16)]) #print ' '.join(x.encode('hex') for x in string) hexdump("A"*100+"B"*100)Colored by Color Scriptercs 결과 사용방법 : 소스코드의 6번째 줄처럼socket이나 페이로드를 구현할 때 쓸만할거 같아서 작성했다. 4번째 줄처럼 바로 보는 방법도 있지만, 보기 불편하므로... ps. hexdump 모듈이 있는거 같지만 따로 설치해야 하..