후배가 구축한 SVN+TRAC서버에 Memget Project 정리를 시작함....


근데 아직 익숙치가 않아서 뭐가 먼지도 모르겠고 ㅋㅋㅋ 후배는 이거 써보고...


 ㅋㅋ

보면서 공부했는데 ㅋㅋ

와 근데 진짜..

프로세스 설명해둔거 보고

와 씨발 이게 업무 흐름이야 !

이런게 있다늬 !!

라고 함... ㅋㅋㅋ


뭐 암튼 아직 익히는 단계라 정리도 잘 안되있고 너저분하지만 일단 좀 익혀야겠다 ㅋㅋㅋ


후배가 자꾸 그렇게 쓰는거 아니라고 막 알려주긴하는데 ㅋㅋㅋ 아직까진 나 편한데로 쓰고싶다 ㅋㅋㅋ 뭐 지저분한걸 조금 느끼고 있긴하지만 그래도 필요성 느끼기전까진 이렇게 쓸듯... ㅠㅠ 먼가 하나 할때마다 작성할것도 많고 ... 해두면 나중에 좋겠지만....귀..찮....ㅋㅋㅋㅋㅋㅋㅋㅋㅋ


너저분하지만 일단 링크 공개!! (소스는 못봄...아직 부끄러움...ㅋㅋㅋㅋ)


조만간 바이너리 다운로드 링크도 공개할 예정!!


TRAC서버 이전 및 도메인 변경됨!!!

TRAC : https://dev.unsigned.kr/trac


Posted by Nvdark
,

일단 BHO에 접근하여 IHTMLDocument2를 얻었다는 가정하에 시작.

IHTMLDocument2  *pHTMLDoc2


BSTR ValueChange;

BSTR TagID;

ValueChange = CStringToBstr(g_BhoTagValueChange);

TagID = CStringToBstr(g_BhoTagID);


CComQIPtr <IHTMLDocument3> pDocu3_ValueChange(pHTMLDoc2);

CComPtr <IHTMLElement> pElement_ValueChange;


pDocu3_ValueChange->getElementById(TagID, &pElement_ValueChange);


CComQIPtr <IHTMLInputElement> pInput_ValueChange(pElement_ValueChange);


if( pInput_ValueChange )

{

pInput_ValueChange->put_value(ValueChange);

}

CStringToBstr()은 Edit Control 에서 입력받은 CString을 BSTR로 변환해주기 위해 사용함.

주요 내용은 

CComQIPtr <IHTMLDocument3> pDocu3_ValueChange(pHTMLDoc2);

로 IHTMLDocument2를 3으로 바꿔주고

pDocu3_ValueChange->getElementById(TagID, &pElement_ValueChange);

입력받은 테그 ID로 해당 엘리먼트를 검색 후

CComQIPtr <IHTMLInputElement> pInput_ValueChange(pElement_ValueChange);

(INPUT테그일경우) IHTMLInputElement로 변환함

정상적으로 변환되었다면 put_value함수를 이용해 값을 변경할 수 있음.

반대로 get_value를 사용하면 해당값을 얻어올 수 있다.

Posted by Nvdark
,

ARP 모듈에서 스푸핑 기능사용 시 Local IP와 gateway IP를 수동으로 적자니 귀찮아서 자동 입력으로 수정함.

이에 따라 추가 코드가 발생했는데.... 


자신의 IP 주소를 가져오는 법은 다음과 같다.

Memget 내에 이리저리 왔다갔다 하는 불필요한 소스코드가 좀 많아서 핵심만 적겠음.


일단 컴퓨터에서 디바이스 정보를 가져와야 한다. 이유는 각 디바이스마다 가지고 있는 IP정보들이 다르기때문이다.

자신이 사용중인 네트워크 디바이스를 선택하여 해당 장비의 IP주소 정보를 가져와야 한다. 

 GetAdaptersInfo() 함수로 현재 네트워크 디바이스의 정보를 가져올 수 있다. 

사용법은  dwStatus = GetAdaptersInfo(pAdapterInfo,&ulBuffer); 로 사용하면 된다. 

첫 번째 인자는 

PIP_ADAPTER_INFO pAdapterInfo = NULL;

로 선언하였으며, 구조체(리스트로 되어있음)에 대한 자세한 내용은 MSDN을 참조 바람.


PIP_ADAPTER_INFO 요녀석은 어뎁터가 가지고 있는 각종 정보를 저장하는 구조체라고 보면 될듯하다. 


다시 작성하면


 DWORD dwStatus;

PIP_ADAPTER_INFO pAdapterInfo = NULL;

ULONG ulBuffer = 0;

dwStatus = GetAdaptersInfo(pAdapterInfo,&ulBuffer);


가 되겠다.  하지만 종종 오버플로우가 발생하면서 정상적인 동작을 안하는 경우가 있다.

그럴경우에는 

pAdapterInfo = (PIP_ADAPTER_INFO)malloc(ulBuffer);

요렇게 메모리 할당을 한 후 다시 시도하면 정상적으로 잘 동작하는 것을 볼 수 있다.


그리고 해야할 것은 원하는 디바이스 정보를 찾는 일이다. 일단 컨트롤 리스트건 리스트 박스건 출력된 디바이스를 선택한 후 해당 번호를 a_devnum 에 저장했다 가정하면,


for(FindDeviceCount = 0 ; FindDeviceCount<a_devnum ; FindDeviceCount++)

{

pAdapterInfoP = pAdapterInfoP->Next;

이런식으로 간단하게 루프 돌면서 해당 디바이스를 찾으면 된다. 

혹은 PIP_ADAPTER_INFO구조체를 보면 디바이스 이름과 기타 정보를 담고 있기 때문에 이름, 아이피 등으로도 디바이스를 찾을 수 있다.

리스트에서 해당 디바이스를 찾았으면 다음은 간단하다.

pAdapterInfoP->IpAddressList.IpAddress.String

pAdapterInfoP->GatewayList.IpAddress.String

에 Local IP, Gateway IP가 있는 것을 발견할 수 있다!


그럼...이상...

 





Posted by Nvdark
,