fckorea's life, library, research. :: 'My Style' 카테고리의 글 목록

[ Security_Tools ] strings.bat

Posted 2013.04.29 16:12


strings.bat

strings를 이용하여 파일 string 뽑을때 ASCII와 Unicode 모두 추출해야할 때가 있다.

매번 -u 옵션을 주고 Unicode를 뽑는게 귀찮아서 strings.bat을 만들어서 시스템 폴더에 넣어두고 사용하면 참 편하다.

없으면 찾게되서 여기 올려둠ㅎㅎㅎ

오랜만에 블로깅ㅎㅎㅎ

피아노를 배우고 싶었는데, 맥북의 Garage Band의 "연주 방법 교육"이 있었다!!!

근데 피아노가 없었지... 그래서 샀음ㅎㅎㅎ 마스터키보드 찾다가 다이나톤 DCK-61이 젤 가성비가 좋대서 한 달 고민 끝에 샀음~!!!

인증샷!

피아노 배워야지 :)

- by fckorea.


Thread와 UI Control에 대한 글을 계속 올리는듯...ㅜㅜ
다수의 UI에 접근하게될 시에 다수의 Delegate 함수가 만들어질수도 있으니, 한번이면 족한 것들은 아래와 같이 쓰자!ㅜㅜ

private void ThreadFunc()
{
    this.BeginInvoke(new MethodInvoker(delegate()
	{
		this.MyTextBox.Text = "fckorea!";
	}
    ));
}


Thread 함수 내에서 BeginInvoke(비동기 호출)로 할 수 있다.ㅎㅎㅎ
단, 비동기니 즉시 안바뀔지도...ㅎㅎㅎ


Thread에서 UI Control에 접근 시에 Delegate를 이용하여 접근해야되는데, 값 Setting은 해봤지만 Get은 안해봤다...ㅜㅜ 결국 해야될 일이 생기고, 찾다가 알게된 내용!

private delegate string GetTextBoxCallback(TextBox tbTxtBox);

private string GetTextBox(TextBox tbTxtBox)
{
    if (this.tbTxtBox.InvokeRequired)
    {
        GetTextBoxCallback GetTextBoxCB = new GetTextBoxCallback(GetTextBox);
        return (string) this.InvokeGetTextBoxCB, new object[] { tbTxtBox });
    }
    else
    {
        return tbTxtBox.Text;
    }
}


중요한건 Invoke 요청시 꼭 return (리턴타입)으로 해야됨!!!

[ Programming_Tips ] Multi Threading.

Posted 2011.08.04 00:24
프로그램을 만들다 보면 Multi Threading할 일이 생기기 마련이다.
어떤 한 목록을 다수의 Thread로 처리하려면 아래와 같이 큐를 이용하면 좋을 듯...

Queue
 1  2  3  4  5  6  7

ThreadList
Thread1 Thread2  Thread3 
Queue POP (1)  Queue POP (2)  Queue POP (3)
 Scan  Scan  Scan
 ...  Scan End  Scan End
 ...  Queue POP (4)  Queue POP (5)

이런 식으로!

[ Security_Windows ] Windows Logon Type

Posted 2011.08.01 16:32
이벤트 로그온에 대한 분석 시 로그온 유형을 매번 헷갈려서(10번이 원격인것만 빼고ㅎㅎㅎ) 로그온 유형에 대한 내용을 정리하여 보았다.

<로그온 유형>
0 : 시스템 계정만이 사용함.
2 - Interactive(대화식) : 콘솔에서 키보드로 로그온, 로컬 로그온, 터미널, 원격쉘과 같은 로그온 형식.
3 - Network(네트워크) : 기본인증, 네트워크를 통한 원격 로그온. (파일공유, IIS 접속 등)
4 - Batch(자동실행, 스케쥴) : 예약 작업, 스케줄에 등록된 작업을 실행 시 미리 설정된 계정 정보로 로그온.
5 - Service(서비스) : 서비스가 실행될때 미리 설정된 계정 정보로 로그온.
6 - Proxy(프록시) : 프록시 타입으로 로그온.
7 - Unlock(잠금해제) : 화면보호기 잠김 해제 시.
8 - NetworkClearText(네트워크[평문암호]) : Type 3번과 비슷하나 계정 정보를 평문으로 전송 시 발생.
9 - NewCredentials(새 자격) : 실행(RunAs)에서 프로그램 실행 시 "/netonly" 옵션을 줄때 발생.
10 - RemoteInteractive(원격 대화식) : 터미널 서비스, 원격 접속, 원격지원으로 로그온.
11 - CachedInteractive(캐쉬된 대화식) : PC에 캐쉬로 저장된 암호로 자동 입력 로그온.
12 - CachedRemoteInteractive(캐쉬된 원격 대화식) : RemoteInteractive와 같음.
13 - CachedUnlock : 워크스테이션 로그온.

C#에서 Thread 사용 시 CrossThreadCall에 대한 처리가 까다롭다...
물론 아래 같이 설정 하나로 무시할 수 있지만, 누수가 발생하는 점이 있다...

CheckForIllegalCrossThreadCalls = false;    // CrossThreadCall 관련 에러 무시


그리고 정당(?)한 방법으로 CrossThreadCall을 해결하려면, 대리자(delegate)를 이용하여야 한다. 예제를 찾아보면 변경하려는 각 컨트롤 마다 대리자와 접근 함수를 만들어 줘야해서 불만이었다...ㅜㅜ
그런데 우연히 들어간 블로그(http://redreans.tistory.com/64) 해당 내용에 대한 좋은 내용이 있지 않은가!!!
해당 내용을 이용하여, 같은 타입(TextBox, Label등)의 컨트롤을 하나의 대리자와 함수로 접근할 수 있다는 것을 알게 됐다!!!ㅜㅜ(감격)

private delegate void SetTextBoxCallback(TextBox tbTxtBox, string strMsg);

private void SetTextBox(TextBox tbTxtBox, string strMsg)
{
    if (this.tbTxtBox.InvokeRequired)
    {
        SetTextBoxCallback SetTextBoxCB = new SetTextBoxCallback(SetTextBox);
        this.Invoke(SetTextBoxCB, new object[] { tbTxtBox, strMsg });
    }
    else
    {
        tbTxtBox.Text = strMsg;
        tbTxtBox.Update();
    }
}


위의 소스를 좀 더 연구하면, 하나의 대리자와 함수로 원하는 컨트롤을 다 접근할 수 있지 않을까?ㅜㅜ


C#에서 Process에서 사용하고 있는 Module List를 얻는 방법.

using System.Diagnostics;
using System.ComponentModel; 

namespace CSharpTestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] ProcList = Process.GetProcesses();

            foreach (Process Proc in ProcList)
            {
                Console.WriteLine(Proc.ProcessName + " In Modules");
                try
                {
                    foreach (ProcessModule ProcModule in Proc.Modules)
                    {
                        Console.WriteLine(ProcModule.FileName);
                    }
                }
                catch(Win32Exception Win32Ex)
                {
                    Console.WriteLine(Win32Ex.Message);
                }
            }
            Console.ReadLine();
        }
    }
}


ProcessModule 주요 속성

BaseAddress : Module이 Load된 메모리 주소.
EntryPointAddress : Module Entry Point Address.
FileName : File Full Path.
FileVersionInfo : Module의 버전 정보.
ModuleName : Module's.

Process 주요 메서드

-

Ref : http://msdn.microsoft.com/ko-kr/library/system.diagnostics.processmodule.aspx



C#에서 Process List를 얻는 방법.

using System.Diagnostics;

namespace CSharpTestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] ProcList = Process.GetProcesses();

            foreach (Process Proc in ProcList)
            {
                Console.WriteLine(Proc.ProcessName);
            }
            Console.ReadLine();
        }
    }
}


Process 주요 속성

Id : PID
MainModule : Process Full Path.
MainWindowTitle : Main Window 창의 Caption.
Modules : Process의 모듈들.
Threads : Process의 스레드들.

Process 주요 메서드

GetProcessById(Int32) : Local의 해당 Id(PID)를 가진 Process를 반환.
GetProcesses() : Local의 모든 Process를 반환.
GetProcessByName(String) : Local의 해당 이름을 가진 Process를 반환.

Ref : http://msdn.microsoft.com/ko-kr/library/system.diagnostics.process.aspx


AccessLog나 ErrorLog등의 로그 파일들은 대형 사이트의 경우 하루치 로그 용량이 거대하다.
대략 1 ~ 3-4 기가 바이트 정도로 에디터로 열기도 힘들고... (상용 에디터로 열수도 있음 ^^) 
열었다고 해도 찾는 데도 힘들다.
하지만 윈도우 상에서 간단하게 찾을 수 있는 명령을 소개한다.
아래 명령은 파일을 못여는 일은 없을테고, 시간은 만족할만한 수준이다.

더보기

 
« PREV : 1 : 2 : 3 : 4 : ··· : 10 : NEXT »

티스토리 툴바