- lumenFC 축구 동호회
- 마샤블
- 웍스프레소
- 소셜@나눔<소셜미디어나눔연구소>
- 리버스코어
- LAIN
- LAIN 이사한 블로그
- TeamCR@K
- Sunnyday
- 보안 걱정이
- 리버싱 학습
- securityfirst_jo
- Practical Security Blog
- 세상, 그 유쾌한 전장
- 악성코드관련블로그
- Back to the Mac
- 패킷분석입문
- PacketInside / 네트워크 패킷 분석 블로그
- 침해사고분석 :: 네이버 블로그
- 소프트웨어 기술자경력관리시스템
- JK.Moon
- 자바 온라인학습
- Ezbeat의 도서관
- Dreams of a Final Journey
- IT eBooks - Free Download - Bi…
- Index of /madchat/coding/rever…
- Security Insight
- Reversing war game
- 고길고기
- clamav
- zerowine
- FORENSIC-PROOOF
- jquery 예제
- 조대협의블로그
- 국가과학기술인력개발원 교육포털 사이트
- 빅데이터, splunk
- 지식을 연주하는 사람
- malware analysis system
- 건국대토익스피킹
- 소프트웨어개발 및 협업도구
kisoo
IoctlNdisQueryGlobalStats (무선랜 SSID 값 쿼리 함수에서) 본문
IoctlNdisQueryGlobalStats (무선랜 SSID 값 쿼리 함수에서)
JamesK78 2009. 2. 24. 18:02오늘은 무선랜 네트워크 정보에서 SSID 값을 가져 오는 부분에 대해서 설명 한다.
개발 하게 된 동기는 사이트에서 우리 솔루션을 도입 한 후에 무선랜 차단 정책을 설정 하였는데
3/1 가량이 무선랜을 사용 하고 있었다. 무선랜 을 허용 하자니 안전하지가 않고 차단을 해 놓으니
사용 할 수가 없어서 SSID 를 얻어 와서 설정한 허용 정책 (SSID 값) 과 비교 하여 동일 하다면
무선랜 허용을 해 줘야 한다는 사이트 담당자 요구 사항이 있었기 때문이다.
어쨋든 개발 후에 테스트를 하는데 자꾸 SSID 값 뒤에 쓰레기 값이 붙었다.
예)KSKANG_SSID *&()$DF34 과 같은 쓰레기 값들.... 실제로는 KSKANG_SSID 이값만 나와야 정확히 정책과
비교 된다.
그래서 버퍼 셋팅을 잘못 한 것 같아 버퍼를 모두 MEMSET 을 했는데도 특정 pc 에서는 쓰레기 값이 출력 되는 요 이상한 값들.....머리를 써야 한다.... 리턴 되는 사이즈에 널값 채워주면 될것을....ㅜㅜ 머리가 나빠진다...점점..
/* 함수 부분*/
DWORD CWlanInfo::IoctlNdisQueryTest( LPCTSTR lpAdapterName, PNDIS_802_11_SSID pNdisSsid )
{
UCHAR OidData[4096]={0,};
DWORD nResult, ReturnedCount = 0;
ULONG nConnectedState;
memset(OidData, 0x00, 4096);
nResult = IoctlNdisQueryGlobalStats(
lpAdapterName,
OID_802_11_SSID,
OidData/*pNdisSsid*/, ==> 1.주석 처리 한 이유는 ??
sizeof( OidData )/*sizeof(NDIS_802_11_SSID)*/, ==>2.주석 처리 한 이유는??
&ReturnedCount
);
if( nResult != ERROR_SUCCESS )
{
//RETURN ERROR
}
else
{
OidData[ReturnedCount] = NULL; ==> 이 부분을 추가 해주니 쓰레기 값이 나오질 않았다.
*pNdisSsid = *((PNDIS_802_11_SSID)OidData);
}
return( nResult );
}
1.주석 처리 한 이유는?
-> PNDIS_802_11_SSID TYPE 의 pNdisSsid 의 구조체 포인터를 넘기면 각 os 환경 마다 구조체 사이즈가 달라 질 수 있기 때문에 위험 하다고 판단 했다.
2.마찬 가지로 사이즈가 OS 마다 다르기 때문에 잘못 된 값을 가져 올 수 있으므로 넉넉하게 4096의 버퍼 사이즈를 보내 준다.
드라이버에 구조체 값을 담아 쿼리 할 때 주의 해야 할 것은 os 마다 구조체 사이즈가 다를 수 있다는 것이다.
그래서 UCHAR 형으로 버퍼를 넉넉히 설정 하고 담아 오는 것이 안전하고 정확한 값을 구할 수 있다.