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 »

티스토리 툴바