Wednesday, September 20, 2023

1998년 SSM(삼성소프트웨어 멤버쉽 전시회) 동영상(SBC)


출처 : 내가 갖고 있던 CD

삼성 사내 방송에 나왔던 내용입니다. ㅋㅋ
카메라맨, 인터뷰어, 주위 많은 사람들...
태어나서 처음 하는 인터뷰라서
엄청 말을 더듬거렸지요.
말실수하고 또 말실수하고..
5~6번은 촬영했었던 것 같습니다. ㅠㅠ
인터뷰도 경험이 필요하다는...

SSM에 있을 때만큼 빡시게 공부를 해 본 적은 없었던 것 같습니다.
혼자서 코덱을 만들어 보려고 무모한 도전을 했었고(물론 실패했지만 ^^)
인터넷 뒤벼 가면서 공식 이해하고 알고리즘 알아 내고,
예전에 배웠던 수학책 꺼내 들고 Fouriet Transform 꼬박꼬박 공식 이해해 가며
공부했었던 소중한 시간들...

지금은 나이를 먹어 "wannt list"보다 "to do list"가 먼저이지만
그때처럼 아무 생각 없이 무작정 공부만 할 수 있었던 때가 그립네요.

현 멤버쉽 회원들에게 고하는 글 : 슬리퍼 신고 밖에 돌아 다니지 마세요. 대번에 티나요!!!


Tuesday, April 12, 2011

How to disable other adapters

netsh interface isatap set state disabled
netsh interface teredo set state disabled
netsh in 6to4 set state disable

Sunday, April 3, 2011

How to use pcap library in Borland C++Builder

[Compile]

1. In Borland C++Builder,  before you include pcap.h file, add the following codes.

#include "winsock2.h"
#define HAVE_U_INT8_T // for preventing Multiple declaration for 'int8_t'
#define WPCAP
#define HAVE_REMOTE
#include "pcap.h"

2. If you don't want to define HAVE_U_INT8_T, add the following codes in bittype.h.

#if SIZEOF_CHAR == 1
typedef unsigned char u_int8_t;
#ifndef __BORLANDC__
typedef signed char int8_t;
#endif // __BORLANDC__
#elif SIZEOF_INT == 1
typedef unsigned int u_int8_t;
#ifndef __BORLANDC__
typedef signed int int8_t;
#endif // __BORLANDC__
#else  /* XXX */
#error "there's no appropriate type for u_int8_t"
#endif


[Link]

In WinPcap/Lib folders, copy Packet.lib and wpcap.lib in any folders.

coff2omf Packet.lib Packet2007.lib
del Packet.lib
move Packet2007.lib Packet.lib




coff2omf wpcap.lib wpcap2007.lib
del wpcap.lib
move wpcap2007.lib wpcap.lib

Saturday, April 2, 2011

카카오톡 망 부하를 계산해 봅시다.

http://goo.gl/Yqsxk

이통사 기술팀의 내부 자료에 따르면 카카오톡 서버는 10분 주기로 280byte의 신호를 송신한다. 가입자 상태 확인 등 4개 신호가 시간당 6차례, 하루 24시간 전송된다. 카카오톡 가입자 1인당 자신도 모르게 매달 1만 7280건(4X6X24X30)의 트래픽이 발생한다. 가입자 1000만명으로 계산하면 매달 1728억건. 한달 추산 데이터 트래픽은 4만 5061기가바이트(GB·44TB)에 이른다.


44TB가 많은 것처럼 뉘앙스를 풍기는 군요. 자, 그럼 이 44TB가 많은 것인지, 아닌지를 비교해서 분석해 봅시다.


요즘에는 네떡 카드가 좋아 져서 Gbps(1초에 Giga bit를 처리해 주는)급 NIC Card가 많이 나왔습니다. 일반 가정 환경에서는 실제로 그만큼은 쓰지는 못하고, 큰 규모의 네트워크 대역이되면 Gbps급으로 사용이 되는 경우를 볼 수 있습니다. 한달동안 계속해서 그 10배인 10Gbps가 흐른다고 가정을 하고 네트워크 대역폭을 계산해 보겠습니다.


1초 : 10 Gb
하루 : 10 Gb * 86400 = 864000 Gb (하루는 86400초)

한달 : 864000 Gb * 30 =  25920000 Gb ( 한달은 30일)

25920000 Gb = 3240000 GB =
약 3614 TB


예를 들어 국내 특정 ISP가 동시 처리 능력이 100Gbps라고 가정을 하면 한달에 처리하는 대역폭은 약 3만 TB가 됩니다. CDN 서비스를 하는 곳은 동시 600Gbps를 처리할 수가 있다고 들었습니다(2009년도 자료).


100 Gbps를 처리하는 ISP에서의 네떡은 3만 TB / 카카오톡에서 차지하는 네떡은 44TB


돈으로 3만원과 44원을 비교하면 44 TB가 얼마나 작은 것인지 금방 알 수 있습니다. 결론적으로 이통사가 카카오톡을 싫어 하는 이유는 "트래픽은 절대 아니라는 것"이 기사에 의해 저절로 밝혀진 꼴입니다.

Tuesday, March 15, 2011

Simple c++ question. Is "T" class or template?




#include <iostream>

template <class T> // (1)
class B
{
public:
  void foo(T* t); // (2)
};
 
class T // (3)
{
public:
  int i;
};
 
void B<T>::foo(T* t) // (4)
{
  std::cout << t->i << std::endl;
}
 
int main()
{
  B<T> b; // (5)
  T t;
  t.i = 3;
  b.foo(&t);
}

BugTruck Seminar at Sookmyung Womens University

Sunday, March 6, 2011

How to overload new and delete operator


void* __cdecl operator new(size_t size)
{
 return malloc(size);
}

void __cdecl operator delete(void* p)
{
 free(p);
}

Wednesday, March 2, 2011

Where array count is stored when new[] is called?


[source code]
 
#include <new> // for size_t
#include <stdio.h>

class A 
{
public:
  A() {}
  virtual ~A() {}
  static void* operator new (size_t size)
  {
    void* res = ::operator new(size);
    printf("new   return %p\n", res);
    return res;
  }
 
  static void operator delete (void *p)
  {
    printf("delete       %p\n", p);
    ::operator delete(p);
  }
 
  static void* operator new[](size_t size)
  {
    void* res = ::operator new(size);
    printf("new[] return %p\n", res);
    return res;
  }
 
  static void operator delete[](void *p)
  {
    printf("delete[]     %p\n", p);
    ::operator delete[](p);
  }
};
 
void foo()
{
  A* a = new A;
  printf("a=           %p\n", a);
  delete a;
}
 
void bar()
{
  A* a = new A[5];
  printf("a=           %p\n", a);
  delete []a;
}
 
int main()
{
  foo();
  printf("\n");
  bar();
}
 
 
[result]
 
new   return 00633B88 // same
a=           00633B88 // same
delete       00633B88 // same

new[] return 00631A90
a=           00631A94 // 4 byte skipped !!!
delete[]     00631A90


When new[] is called, you can figure out that array count value(5) is stored prior to new[] operator return pointer value(4 bytes offset in the above result). Of course(as you guess), when delete[] is called, the count value is used to delete all allocated objects.

Sunday, February 27, 2011

C++ to HTML

Sometimes, if you would show your C++ source code in a certain web site(e.g. blog), you'd better convert C++ source code into HTML format. Here is a good web site for this.

http://www.bedaux.net/cpp2html

The differences among auto_ptr, scoped_ptr and shared_ptr



#include <boost/scoped_ptr.hpp>
#include <boost/shared_ptr.hpp>
#include <memory>
#include <stdio.h>

#include "Int.h" // include 4 bytes int class

typedef std::auto_ptr<Int>     auto_ptr;
typedef boost::scoped_ptr<Int> scoped_ptr;
typedef boost::shared_ptr<Int> shared_ptr;

void size()
{
  printf("sizeof(auto_ptr)   is %d\n", sizeof(auto_ptr));   // 4
  printf("sizeof(scoped_ptr) is %d\n", sizeof(scoped_ptr)); // 4
  printf("sizeof(shared_ptr) is %d\n", sizeof(shared_ptr)); // 8
}

void foo_ptr(auto_ptr ap)
{
  ap->foo();
}

void foo_ptr(scoped_ptr scp)
{
  scp->foo();
}

void foo_ptr(shared_ptr shp)
{
  shp->foo();
}

void foo()
{
  {
    //
    // auto_ptr
    //
    Int* pi = new Int(5);
    auto_ptr ap(pi);

    foo_ptr(ap);     // compile ok
    ap->foo();       // runtime error
  }

  {
    //
    // scoped_ptr
    //
    Int* pi = new Int(5);
    scoped_ptr scp(pi);

    // foo_ptr(scp); // compile error
    scp->foo();      // runtime ok
  }

  {
    //
    // scoped_ptr
    //
    Int* pi = new Int(5);
    shared_ptr shp(pi);
foo_ptr(shp);    // compile ok
    shp->foo();      // runtime ok
  }
}

int main()
{
  size();
  foo();
}

Download source code : http://sites.google.com/site/gilgildownload/download/IntTest2.zip

C++ copy constructor and assign operator



Can you distinguish between copy constructor and assign operator in C++ code? Here's a sample for you. Be aware of knowing that even if it's code format looks assign operator format, it is not assign operator format but copy constructor one.


Download source code : https://sites.google.com/site/gilgildownload/download/IntTest.zip


class Int
{
public:
  // constructor
  Int(const int i = 0)                 { printf("C...
  Int(const Int& r)                    { printf("C...


  // destructor
  virtual ~Int()                       { printf("D...


  // assign operator
  const Int& operator = (const int i)  { printf("A...
  const Int& operator = (const Int& r) { printf("A...
};


void foo()
{
  {
    Int a(1);  // C
    Int b(2);  // C
    Int c(a);  // C
  }


  {
    Int a(3);  // C
    Int b;     // C
    b = 4;     // A
    Int c;     // C
    c = a;     // A
  }


  {
    Int a(5);  // C
    Int b = 6; // C // not assign operator
    Int c = a; // C // not assign operator
  }
}


int main()
{
  foo();
}

Wednesday, February 23, 2011

Highscore - The Boost C++ Libraries

There are so many articles and exmaples for boost.



How to build boost library as release & static & multi thread & static runtime library in visual studio

In boost directory, type the followng command.

bjam variant=release link=static threading=multi address-model=32 runtime-link=static

It may take a few minutes to build libraries, and you will get "*-mt-s-*.lib" files in library directory($root/stage/lib).

Form example,
2011-02-23 오후 11:53 720,852 libboost_date_time-vc80-mt-s-1_45.lib
2011-02-23 오후 11:54 1,893,972 libboost_filesystem-vc80-mt-s-1_45.lib
2011-02-23 오후 11:55 5,675,002 libboost_graph-vc80-mt-s-1_45.lib
2011-02-23 오후 11:48 423,886 libboost_iostreams-vc80-mt-s-1_45.lib
2011-02-23 오후 11:50 1,550,020 libboost_math_c99-vc80-mt-s-1_45.lib
2011-02-23 오후 11:50 1,570,926 libboost_math_c99f-vc80-mt-s-1_45.lib
2011-02-23 오후 11:50 1,538,966 libboost_math_c99l-vc80-mt-s-1_45.lib
2011-02-23 오후 11:49 5,769,460 libboost_math_tr1-vc80-mt-s-1_45.lib
2011-02-23 오후 11:49 5,905,880 libboost_math_tr1f-vc80-mt-s-1_45.lib
2011-02-23 오후 11:49 5,706,556 libboost_math_tr1l-vc80-mt-s-1_45.lib
2011-02-23 오후 11:51 320,242 libboost_prg_exec_monitor-vc80-mt-s-1_45.lib
2011-02-23 오후 11:50 5,050,400 libboost_program_options-vc80-mt-s-1_45.lib
2011-02-23 오후 11:50 108,922 libboost_random-vc80-mt-s-1_45.lib
2011-02-23 오후 11:54 10,374,684 libboost_regex-vc80-mt-s-1_45.lib
2011-02-23 오후 11:51 11,429,740 libboost_serialization-vc80-mt-s-1_45.lib
2011-02-23 오후 11:51 926,442 libboost_signals-vc80-mt-s-1_45.lib
2011-02-23 오후 11:53 92,208 libboost_system-vc80-mt-s-1_45.lib
2011-02-23 오후 11:52 10,232,224 libboost_test_exec_monitor-vc80-mt-s-1_45.lib
2011-02-23 오후 11:52 464,268 libboost_thread-vc80-mt-s-1_45.lib
2011-02-23 오후 11:52 11,447,096 libboost_unit_test_framework-vc80-mt-s-1_45.lib
2011-02-23 오후 11:53 46,877,338 libboost_wave-vc80-mt-s-1_45.lib
2011-02-23 오후 11:51 9,099,918 libboost_wserialization-vc80-mt-s-1_45.lib

Friday, December 7, 2007

[POC2007] 내 메신저 대화내용 누군가 보고 있다!

스푸핑과 MITM·VR 등과 결합, 신개념 스니핑 기법 공개...'GilGil' 이번 ‘POC2007’(http://www.powerofcommunity.net/)에서 발표자 'GilGil'은 SnoopSpy2를 통해 보안서버 상에서 패스워드 스니핑, SSH 클라이언트 상의 데이터 스니핑, MSN 메신저와 같은 국내에서 많이 사용되는 주요 메신저의 대화 스니핑, VoIP 스니핑, FPS 게임 해킹 등을 현장에서 직접 보여줄 것이다. 그동안 국내에서 추진되어온 보안 서버에 보안 문제가 여전히 존재하고 있으며 보안서버만으로는 완벽한 보안이 이루어지지 않는다는 것을 확인할 수 있을 것이다. 다음은 그와의 인터뷰 내용이다.

Interview 발표자: ‘GilGil’
이번 발표내용에 대해 좀 더 구체적으로 설명해준다면?
지금까지 대두되고 공개되어져 왔던 스니핑 기반의 해킹 기법들을 총망라해보는 것입니다. 처음에는 단순히 패킷을 보는 것으로 시작한 스니핑 기법이 점차 스푸핑(Spoofing), MITM(Man In The Middle Attack) 및 VR(Version Rollback) 등과 결합하여 새로운 스니핑의 해킹 기법으로 진화하고 있습니다. 이러한 다양한 스니핑 기법에 대해 정리를 하고 발표를 해보고자 합니다.

이를 악용하면 어떤 문제점들이 발생할 수 있나?
해커의 입장에서 봤을 때에 노력의 차이, 시간의 차이가 있기는 하지만 메신저 대화, 인터넷 전화 통화, 각종 개인 신상 정보 등 인터넷 프로토콜(IP) 기반의 모든 통신 정보들이 노출될 수 있습니다. 이러한 스니핑 기반의 정보 누출을 막기 위해 훌륭한 암호화 정책이 수립되어 실천이 되고 있지만 그런 것들이 영원한 방패막이 될 수는 없습니다. 해킹은 보안보다 항상 앞서 나아가기 때문입니다.

메신저 서비스 기업에 한마디 하신다면?
해커는 그럴만한 가치가 있는 것에만 해킹을 시도한다는 불문율이 있습니다. 관심이 없다면 해킹을 하지도 않습니다. 자사 제품에 대한 취약점이 공개된 것을 부정적인 면으로만 보지 말았으면 좋겠으며 공개된 취약점때문에 해야 할 일이 하나 더 늘어 났다라고만 하는 불평보다는 같이 해결해나갈 수 있는 공감대를 형성해나갈 수 있는 여유로움과 관대함을 가질 수 있었으면 하는 바람입니다.

메신저를 이용하는 이용자들이 주의해야 할 점이 있다면?
해킹차원의 기술적인 입장뿐 아니라 기업차원의 법적인 입장을 고려해서도 메신저를 통해 오고 가는 모든 내용들은 제 3자에 의해 노출될 수 있고 저장될 수 있으며 실제로 관련 제품들도 나와 있습니다. 회사의 기밀보호의 차원으로 봤을 때에는 관련 제품들을 오히려 긍정적으로도 볼 수 있습니다. 사용자의 입장에서는 이러한 사실을 항상 인지하고 정말 중요한 내용에 대해서는 가급적 메신저를 사용하지 않도록 하는 마인드가 중요합니다.

이번 POC2007 컨퍼런스에 거는 기대가 있다면?
해커나 정호보호 전문가들에 의해 여러 방면의 취약점들이 발견되어져 오고 있지만 대부분 금단의 열매로 치부가 되어 공론화되지 못하는 것이 일반적입니다. 취약점 공개가 금기시될 수밖에 없기 때문에 보안 실무자나 관련 담당자는 그러한 문제점들을 이론적으로만 접근할 수밖에 없으며 문제점의 본질적인 곳을 접하지 못하기 때문에 그에 따르는 올바른 보안정책을 수립할 수가 없습니다.

이러한 원인과 결과로 인해 보안정책 수립이 제대로 되지 않으면서 점점 더 취약해 질 수 밖에 없는 악순환의 고리만 반복됩니다. 만약 그러한 취약점의 정보들이 공론화될 수 있는 문화가 형성된다면 처음 설계나 개발단계에서부터 한층 더 안정적인 서비스가 가능하게 되고 보안적인 면에서 한층 더 발전할 수 있을 것이라는 긍정적인 판단을 해 봅니다. POC2007은 이러한 면에 있어서 더욱 실무적이고 현실적인 정보공유의 자리로 거듭났으면 하는 바람입니다.

[길민권 기자(reporter21@boannews.com)]



Hendrik하고 장난치던 사진.

POC2007 공식행사 만찬까지 끝나고 나서
스탭들이 자는 큰 방에 외국인, 스탭, 기타 분들 모두 모여 있을 때
제가 헨드릭한테 따라해 보라고 장난 좀 쳤습니다.
잘 따라 하죠? ㅋㅋ ^^


















요건 Hendrik 사진. ^^ (출처 : http://www.powerofcommunity.net/poc2007/picture )















VoIP 라우터 공격.... 음... 대단... --b
이번 Hendrik 발표때문에 국내 VoIP 모 대기업(삼X네X웍X)에서 쪼~끔~ 긴장했었다는 후문이...
결국 발표 전체 내용니 원론적인 것이라서(기술적인 내용만 언급)
그리 이슈화는 되지 못하였지만. ㅋㅋ

근데 이 아저씨 말도, 행동도, 생김새도 다 젊잖은데
나이는 나보다 훨 어리다는... ㅠㅠ

POC2007 오프닝 동영상입니다.

동영상 파일 크기가 커서 작업을 한 다음에 Youtube에 올렸습니다. ^^

원본 : http://www.powerofcommunity.net/poc2007/opening.avi

Youtube : http://www.youtube.com/watch?v=pGq0__NAVAk