CIDY
pwntools에서 recv로 받아온 것 자르기 본문
일단,
recv(n) -> 최대 n바이트 받아옴
recvn(n) -> 정확히 n바이트 받아옴 (덜받으면 대기)
recvline() -> 한줄 받아옴
recvuntil('x') -> 딱 x까지 받아옴 (못받으면 대기)
recvall() -> 모두 받아옴
이건 다들 알고 쓰는 것일 것이다. 내가 이 글을 쓰는 이유는 recv로 받아온 것을 [ : ]로 자를 수 있는데, 스스로 헷갈려서 정리하려고 쓰는 것임..
recvline()[3 : ] -> DEFGHIJKLMNO -> 앞쪽 3바이트 뗌
recvline()[ : 3] -> ABC -> 앞쪽 3바이트만 가져옴
recvline()[-3: ] -> NO\n -> 뒤쪽 3바이트만 가져옴
recvline()[ : -3] -> ABCDEFGHIJKLM -> 뒤쪽 3바이트 뗌
recvuntil(b'M')[3: ] -> DEFGHIJKLM -> 앞쪽 3바이트 뗌
recvuntil(b'M')[ : 3] -> ABC -> 앞쪽 3바이트만 가져옴
recvuntil(b'M')[-3: ] -> KLM -> 뒤쪽 3바이트만 가져옴
recvuntil(b'M')[ :-3] -> ABCDEFGHIJ -> 뒤쪽 3바이트 뗌
둘 다 해본 이유는 개행문자의 차이 때문이다. 내가 테스트해본 c코드에서 출력을
printf("%s\n", buf);
이렇게 해서 개행문자가 있다. recvline()은 한 줄 통째로 받아오는거라 \n까지 받는다. \n을 한 바이트로 친다는 것만 조심해서 쓰자
이렇게 이해하면 쉬움. 기본 기능은 없애는건데, 범위를 넘으면 가져옴
'잡담..' 카테고리의 다른 글
gdb-peda에서 디버깅 시 인자 전달&입력값 주기 (0) | 2022.07.01 |
---|---|
어셈블리 정리(문법구조, 명령어) (0) | 2022.06.30 |
리눅스(Ubuntu-20.04)에서 vi편집기로 파일 만들기 (0) | 2022.06.29 |
리눅스(Ubuntu-20.04)에서 nasm설치 및 사용해보기 (0) | 2022.06.27 |
64-bit 리눅스에서 32-bit로 컴파일하기(gcc) (0) | 2022.06.26 |