최근에 리버싱만해서 피폐해진 머리를 소켓 프로그래밍으로 옮겨서 연구 시작 !
프로그래밍 공부는 하고 싶은데, 책은 사기 싫고 . . . 그럴땐 역시 사랑스러운 MSDN 쨔응 !
http://msdn.microsoft.com/en-us/library/windows/desktop/ms738545(v=vs.85).aspx
자, 이렇게하면 된다. 외국어영역 5등급정도만 나와도 충분히 이해할 수 있는 글뿐(?)이다.
차근 차근 읽어보면
소켓 프로그래밍의 통신에는 크게 두가지로 분류되는 듯하고 내부 절차는 이러한듯 하다.
Server |
Client |
1. Initialize Winsock. 2. Create a socket. 3. Bind the socket. 4. Listen on the socket for a client. 5. Accept a connection from a client. 6. Receive and send data. 7. Disconnect.
|
1. Initialize Winsock. 2. Create a socket. 3. Connect to the server. 4. Send and receive data. 5. Disconnect. |
너무 쉽죠 ?
자, 이제 서버와 클라이언트의 소스를 작성해보자.
위 홈페이지를 들어가면 Client 와 Server 를 구축하는 간단한 예제 소스가 나와있다.
Server 부터 구축해야 Client를 시험해볼 수 있기 때문에 Server -> Client 순으로 구축하는걸 추천한다.
Server.cpp |
#include <Winsock2.h>
#pragma comment(lib,"Ws2_32.lib")
int main(void){
// WSA 초기화
// 소켓 생성
// 현재 컴퓨터의 IP 정보를 얻어옴
// 소켓 주소 생성
// 소켓 주소 생성 {
// socket 및 bind 확인. listen(s,SOMAXCONN); while ( cnt < 2 ){ do{ closesocket(s);
WSACleanup();
return 0;
|
Client.cpp |
#include <Winsock2.h> #pragma comment(lib,"Ws2_32.lib")
int main(void){
memset(&wsa,0,sizeof(wsa));
memset(&addr,0,sizeof(addr)); host = gethostbyname(NULL); getaddrinfo(lpIPString,lpPort,&addr,&paddr);
s = socket(paddr->ai_family,paddr->ai_socktype,paddr->ai_protocol);
connect(s,paddr->ai_addr,paddr->ai_addrlen); {
do{
shutdown(s, SD_SEND);
closesocket(s);
WSACleanup();
return 0; |
이런식으로 구축되지 않는가 !?
자, 그럼 이쯤에서 남자라면 한번씩 해보는 도전 !
인터넷을 접속하면 어떻게 될까 ?
조짐이 있어보인다 !
서버에서 다중연결을 원할 경우엔 accept 부터 thread 를 이용하여 적당히 뿌려주면 될 것같다 > < !!
조금 더 연구해서 한번 서버구축도 노려볼만할거 같음 ' ')b
( 인터넷 계층도 알아볼 필요가 있어보임 )
심심하니 fread, fwrite, fseek, ftell 구현. (Windows) (2) | 2012.10.21 |
---|---|
심심하니, 쓰레드에 대해 이야기해보자. (0) | 2012.10.10 |
Internet Explorer 도대체 임시 파일들은 어디에 ? (6) | 2012.09.26 |
새벽에 자려는데 떠오른 printf (2) | 2012.09.10 |
[Javascript] referrer 를 통한 웹사이트 접근 금지 (6) | 2011.10.15 |
[댁들 이렇거 좋아하잖아요.]
새벽에 여자(2D)와 연애를 즐기고 있는데(미연시) 문득 떠올랐다.
私のTFは何処?
( 내 TF[Temporary File]는 어디에 ? )
※ 인류는 쇄퇴했습니다 1화 참고
그래서, 찾아보는 TF !
[클릭하시면 이미지가 확대됩니다.]
인터넷 옵션을 들어가서 . . .
[클릭하시면 이미지가 확대됩니다.]
설정을 들어가서 ~
[클릭하시면 이미지가 확대됩니다.]
파일 보기를 누르면 !
[클릭하시면 이미지가 확대됩니다.]
임시 파일 목록이 나오죠 ' ')b
- 完 -
덧글 20 개 l 엮인글 0 개
─────────────────────────────────────────────────────────────────
끝일거 같았으면 이 포스팅 쓰지도 않았습니다 ㅋㅋㅋㅋ
문제의 부분인 여기입니다.
어떻게 익스플로어에선 저장된 임시 파일의 해당 주소를 알고 있을까요 ?
사람들이 제일 공포를 느낀다는 파일 검색. 제가 직접한번 해보겠습니다 !
자, 우선 우리의 사랑스러운 도스쨩을 킵니다.
그리고 검색 !
이상한 폴더(AntiPhishing)가 하나 잡혔군요
들어가봅시당.
2CEDBFBC-D.....
안써 ! 안쓴다고 !
이상한 파일 하나 잡혔네요 ' ' ;
파일명이 이상한 sid으로 이루어져 있는데, 지금의 저는 그딴걸 신경쓸 시간따윈 없습니다.
일단, 중요하지 않은 파일로 판단 !
다시 처음으로 돌아가서 !
( 이런걸 복사할때마다 윈도우란 운영체제가 참 잘만들어졌다고 생각합니다. ^^ )
이번엔 '숨김파일과 시스템파일' 을 검색해볼까요 ?
저기 뭔가 보이지 않나요 ?
그렇습니다. Content.IE5 참 냄새가 나는 폴더죠.
들어가봅시다 !
그렇죠. 이렇게 나오는군요 !
자 그럼 이쯤가서 윈도우 화면으로 보죠 !
짜잔 !
자, 그럼 아까 인터넷 파일 임시 목록 폴더에 맨위에 있던 Pastel.swf가 잘 살고 있나 확인해볼까요 ?
잘 살고 있네요.
하지만, 목적인 인터넷 주소까진 있지 않군요 ?
해답은 . . . .
index.dat
이놈이 가지고 있습니다.
(이름부터가 이놈이다 ! 라는 강렬한 포쓰를 뿜어대는군요)
이놈을 좀더 가까이 다가가보면 . . .
폴더도 그렇고 목록을 가지고 있네요 ' ' ;
찾아보니 인터넷주소, 임시파일명, 요청 정보 등의 정보가
이곳에 담겨있어 Temporary Internet Files 란 폴더를 들어갈 때마다
위 파일로 목록을 뿌려주는 것을 확인할 수 있습니다.
저 파일에 관한 자세한 정보는
http://www.forensicswiki.org/wiki/Internet_Explorer_History_File_Format
여기 실려있으니 관심 있으신 분들은 한번 훑어보는거도 나쁘지 않을거 같네요 ㅋㅋ
그럼 글은 여기까지 !
( 기분내키면 소스화시켜서 공개함. )
심심하니, 쓰레드에 대해 이야기해보자. (0) | 2012.10.10 |
---|---|
아, 소켓프로그래밍 모르겠는데 ! 소켓 프로그래밍의 시작 (0) | 2012.10.09 |
새벽에 자려는데 떠오른 printf (2) | 2012.09.10 |
[Javascript] referrer 를 통한 웹사이트 접근 금지 (6) | 2011.10.15 |
모처럼이니까 ! (0) | 2011.08.07 |
새벽에 자려는데 문득 떠올랐다.
여지껏, 가변 인자를 받아오는 함수(printf 등..) 은 매크로 비스무리하게 CRT로 제공하는
'va_arg ,va_end, va_start' 요딴걸 쓰는게 맞다.
그렇다면, 이것을 쓰지 않고 구현한다면 ?
문제를 하나 풀어보자.
#include <stdio.h>
int main(int argc,char *argv[]){ printf("%s",argv[0]); return 0; }
|
이것은 모두가 알고 있는 main 함수의 조금 간략화된 원형이다.
위와 같이 실행하면, 실행파일의 절대 경로가 나올것이다.
그렇다면, argv를 주어주지 않고, 어떠한 함수를 사용하지 않고 절대경로를 출력할 수 있을까 ?
< 문 제 >
#include <stdio.h>
int main(int argc){ printf("%s",???); return 0; }
|
아, 소켓프로그래밍 모르겠는데 ! 소켓 프로그래밍의 시작 (0) | 2012.10.09 |
---|---|
Internet Explorer 도대체 임시 파일들은 어디에 ? (6) | 2012.09.26 |
[Javascript] referrer 를 통한 웹사이트 접근 금지 (6) | 2011.10.15 |
모처럼이니까 ! (0) | 2011.08.07 |
심심해서 적어보는 ReverseMe ! 풀이 [2] (6) | 2010.08.24 |
|
Internet Explorer 도대체 임시 파일들은 어디에 ? (6) | 2012.09.26 |
---|---|
새벽에 자려는데 떠오른 printf (2) | 2012.09.10 |
모처럼이니까 ! (0) | 2011.08.07 |
심심해서 적어보는 ReverseMe ! 풀이 [2] (6) | 2010.08.24 |
[API] 모든 드라이브 경로 구하기 (8) | 2010.04.11 |
FreeLibrary(hMod); return dwReturn;
|
새벽에 자려는데 떠오른 printf (2) | 2012.09.10 |
---|---|
[Javascript] referrer 를 통한 웹사이트 접근 금지 (6) | 2011.10.15 |
심심해서 적어보는 ReverseMe ! 풀이 [2] (6) | 2010.08.24 |
[API] 모든 드라이브 경로 구하기 (8) | 2010.04.11 |
[업데이트] Image Downloader Beta 1.1v (4) | 2010.02.10 |
|
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |