프로그래밍 QnA

k2sguard의 이미지

공유기 내부에서 sniffing 질문입니다.

공유기 내부에 패킷 캡쳐 하는 프로그램을 심어 해당 프로그램이 특정 패킷을 잡아 서버로 보내는 프로그램입니다.

소켓은 socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL)); 으로 열었구요

특정 이더넷만 잡기 위해 옵션은 setsockopt(SOCKID, SOL_SOCKET, SO_BINDTODEVICE, "eth1", strlen("eth1") + 1);
으로 하였습니다 (옵션을 주나 안주나, 다른 이더넷을 선택하나 문제는 같습니다...)

그리고 Promiscuous Mode 설정 코드가 들어가구요 (하지만 이것도 설정 하나 안하나 문제는 같습니다.)

여기서 문제점은 공유기의 포트에 꼽혀있는 장비에서 예를들어 패킷을 10개 전송하면

제가 만든 프로그램에서는 무조건 같은 패킷을 3번씩 반복해서 잡습니다. (즉 30패킷이 잡힘)

프로그램에서 잡다한것 다빼고 소켓 recv만 해도 같은 현상이 발생하구요...
다른 sdk를 사용하는 공유기 장비에 프로그램을 넣어도 같은 문제가 발생하네요.

coathanger의 이미지

HTTP 파일 전송 및 수신 관련


안녕하세요.

HTTP로 파일전송을 하려고 합니다.
일반적으로 Client 프로그램에 http전송하는 형태로 개발하여 실제 수신하는 서버는 흔히 사용되는 IIS나 Apache를 사용하는지요?
아니면 http 파일 수신하는 서버를 자체 개발하여 운영하는지 알고 싶습니다.

그리고 만약 HTTP파일 수신 서버를 만든다고 한다며녀 HTTPS 보안통신 사용 시 공수가 많이 드는지도 알고 싶습니다.

미리 감사드립니다.

lsw2602의 이미지

visual studio 2008 에서 빌드한 library를 visual studio 2010에서 사용이 불가능 한가요?

2008로 작성된 프로젝트를 전달 받아서 2010으로 변환 후 실행파일을 빌드해서
실행을 했더니 실행 중 에러가 발생합니다. (library(dll) 파일을 링크 하는데 이게 2008에서 빌드 된 놈입니다.)
실행파일 빌드는 문제가 없는데 실행 시 에러가 나네요.
원래 그런건가요? 아주 기초적인 질문이겠지만 저에겐 어렵네요 ㅠ

에러메세지 :
응용 프로그램을 제대로 시작하지 못했습니다(0xc0150002).

답변 부탁드립니다. ㅠ

ljh30633의 이미지

동적할당이 된 문자열 sprintf로 복사후에

char *test(char *dirpath){
char *dir;
char *tmpdir;

asprintf(&dir, "%s", dirpath);

sprintf(tmpdir, "%s", dir);

free(dir);

return tmpdir;
}

예를 들어 다음과 같은 코드가 있다고 할때, asprintf함수는 내부적으로 동적 할당을 한다고 들었습니다. 그래서 사용후엔 free를 해주어야 하구요

동적할당했던 dir의 내용을 sprintf를 사용해 tmpdir 포인터 변수에 썼을 경우에

tmpdir 변수도 따로 free를 해주어야 하나요??

dir = tmpdir 이런식으로 되었을 경우에는 tmpdir을 받은 dir을 해제해주어야 하는 걸로 알고 있는데

sprintf를 사용하여 쓰기를 하였을 경우에는 어떻게 해야 하는지 했갈리네요 ㅠ

ktkmyfeeling의 이미지

arp packet 을 구성해서sendto로 전송이 가능한가요?

책과 인터넷을 보고서 arp packet을 구성하여 sendto로 하여 packet 값을 전송하려고 합니다.

socket을 사용하고 있구요

socket(PF_INET, SOCK_RAW, IPPROTO_IP) 식으로 소켓을 구성하였습니다.

packet 값 역시

arphdr과 ether_arp에 자료를 저장하였구요

setsockopt(sd, IPPROTO_IP, IP_HDRINCL, &sasend, sizeof(sasend));

식으로 setsockopt를 지정하였습니다.

물론 setsockopt(sd, SOL_SOCKET, SO_BROADCAST, &sasend, sizeof(sasend));
요러게도 해봤구요.

linux가 안돼어서 unix로만 짜려구 하는데 자꾸 헛다리 짚는 듯한 기분도 들고 해서

이렇게 글 올립니다.

soul_159의 이미지

비동기 소켓 통신 구현시 쓰레드 추가 없이 다른작업 돌면서 접속 체크하는 방법 없을까요?

안녕하세요.

비동기 소켓을 사용하여 소켓 구현을 하려고 합니다.

그런데 주 가 소켓통신이 아니라 다른작업이 작업을 돌면서 connect 요청이 있을때 세션을 맺고

기존 작업의 틀을 바꾸는 작업을 하려고 합니다.

소켓 통신쪽 쓰레드로 빼면 문제가 없으나 쓰레드 추가없이 작업을 하고 싶습니다.

질문의 요지는 . 프로그램 init때 소켓을 정의하고 다른 루틴을 돌다가 connect 요청 감지가 되면 세션을 맺고
주 작업의 루틴을 변경하려고 합니다. 주 작업의 루틴은 세션이 되면 플래그로 변경을 하면되는거라 문제가 없는데
connect 감지를 할 수 있는 방법을...
소켓이 열려있고 포트가 listen 되어 있기 때문에 conn 요청만 오면 connect관련
handling 함수로 뛰도록 할 수 있을거 같은데..(signal처럼)
답변 기다리도록 하겠습니다.

rymuff의 이미지

Operator= Overload 관련 질문

연산자= 오버로드를 통해

Flaction a;
int b;

변수 사이
a=b;
b=a;
가 가능하게 하고싶습니다.

아래와 같이 코드를 짜니
아래와 같은 에러가 발생했습니다.

static선언이나 friend같은 방법을 사용해봤지만 불가능하네요.
혹시 해결방법을 아시나요?

Flaction.h

class Flaction
{
	int c, m;
 
public: 
	...
 
	Flaction& operator =(const int& b);
	int& operator =(const Flaction& b);
 
	...
}

Flaction.cpp

cleansugar의 이미지

이벤트나 콜백은 순서도를 어떻게 그리는 건가요?

이벤트나 콜백은 순서도를 어떻게 그리는 건가요?

루프 돌려서 그리는 방법 말고 이벤트나 콜백을 순서도에서 선택할 수 있는 방법이 있나요?

UML에는 그런 기능이 있나요?

housemania2의 이미지

uboot의 function 을 외부 바이너리에서 실행하려고하는데..

제목그대로 uboot에 function 을 외부 바이너리에서 실행하려고하는데요

global_data gd_t jt 부분에 function 등록하고 외부 바이너리에서 function을 사용하려고하는데
이 function의 메모리 주소를 알수있는방법이있을까요?

예로 외부 바이너리에서는
Struct {
int (*test)();

} ubtfun;

ubtfun* ufs = (ubtfun*)0x3000_0000; // uboot gd_t jt address
ufs->test();

위방법으로 사용하려합니다.
혹은 다른 방법에 대해 경험있으시거나 아시는분 답변 부탁드립니다~

canuyes의 이미지

red black tree의 원리에 관해서...

국내 베스트 셀러인 모 서적으로 red black tree를 공부중에 있습니다.
코드 구현은 이해 하였지만 red black tree의 원리를 이해 하지 못해서 질문 올립니다.
구글링해 보앗지만 모두 코드 구현에만 초점이 맞추어져 있고 원리에 대한 설명을 찾아 볼 수 없었습니다.
red black tree 규칙의 도입이 어째서 binary tree의 기형적인 성장을 막아주는지 알고 싶습니다.

관련 링크나 참고해 볼 수 있는 서적 추천 부탁드립니다.

페이지

프로그래밍 QnA 구독하기