using System;
using System.IO;
public class csCopy
{
public static void Main (String[] args)}
{
if (args.Length != 2)
{
Console.WriteLine (" Using : csCopy src_filename dest_filename ");
return;
}
if (!File.Exists (args[0].ToString ()))
{
Console.WriteLine ("{0} does not exist!", args[0].ToString ());
return;
}
if (File.Exists (args[1].ToString ()))
{
Console.WriteLine ("{0} already exists!", args[1].ToString ());
return;
}
FileStream fsIn = new FileStream
(args[0].ToString (), FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader br = new BinaryReader (fsIn);
FileStream fsOut = new FileStream (args[1].ToString (), FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter (fsOut);
while (br.PeekChar () > -1)
bw.Write (br.ReadByte ());
br.Close ();
bw.Close ();
fsIn.Close ();
fsOut.Close ();
}
}
실용적인 디지털 포렌식 기법과 법률 이슈 정리. Linux, UNIX, Python, 임베디드 장치 개발 등의 강좌 수록. Blockchain, FinTech, IoT 등 최신 IT 트렌드와 관련된 취미 자료를 수집하고, 보안 인식 문화 개선을 위한 정보보호 관련 자료와 일상생활 팁들을 소개.
2012년 7월 25일 수요일
[.net] 현재 디렉토리의 파일 리스트 보여주기
using System;
using System.IO;
class csDir
{
public static void Main (String[] args)
{
DirectoryInfo dir = new DirectoryInfo (".");
Console.WriteLine ("\n 현재 디렉토리는 {0} 입니다.", dir.FullName);
Console.WriteLine
("========================================================\n");
foreach (FileInfo f in dir.GetFiles ("*.*"))
{
String name = f.Name;
long size = f.Length;
DateTime creationTime = f.CreationTime;
Console.WriteLine ("{0, -12:N0} {1, -20:g} {2}",size, creationTime, name);
}
}
}
using System.IO;
class csDir
{
public static void Main (String[] args)
{
DirectoryInfo dir = new DirectoryInfo (".");
Console.WriteLine ("\n 현재 디렉토리는 {0} 입니다.", dir.FullName);
Console.WriteLine
("========================================================\n");
foreach (FileInfo f in dir.GetFiles ("*.*"))
{
String name = f.Name;
long size = f.Length;
DateTime creationTime = f.CreationTime;
Console.WriteLine ("{0, -12:N0} {1, -20:g} {2}",size, creationTime, name);
}
}
}
Windows NT (Backups)
Q1 . 윈도우 NT 에서 어떤 backup 소프트웨어를 사용할 수 있는가? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q2 . Tape drive 를 어떻게 추가할 수 있나? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q3 . NTBACKUP.EXE 는 어떠한 타입의 백업을 지원하는가? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q4 . 어떠한 백업 정책이 유용한가? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q5 . NTBACKUP.EXE 의 사용시 가능한 옵션은? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q6 . Ntbackup을 명령어 라인에서 사용이 가능한가? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q7 . 어떻게 명령 일정을 잡을것인가? 를 참조한다. (윈도우 2000) | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q8 . 백업을 어떻게 복구하는가? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q9 . 열려있는 파일들을 어떻게 백업할 수 있는가? | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Q10 . 레지스트리를 어떻게 백업할 수 있는가? | |||||||||||||||||||||||||
자료출처: 신화정보통신 |
[C#] 이미 설치되어 있는 프로그램을 실행시키기
다음 명령어 하나만 버튼 클릭 이벤트에 넣어주면 됩니다.
System.Diagnostics.Process.Start("IEXPLORER.EXE", "http://www.cyber.pr.kr"); /> 이렇게 하면, 윈도우 익스플로러를 열어서, http:// www.cyber.pe.kr 홈페이지로 가게 됩니다.
System.Diagnostics.Process.Start("IEXPLORER.EXE", "http://www.cyber.pr.kr"); /> 이렇게 하면, 윈도우 익스플로러를 열어서, http:// www.cyber.pe.kr 홈페이지로 가게 됩니다.
2012년 7월 2일 월요일
Windows 터미널 서비스 보안
1. 중요한 데이터를 클라이언트에서 서버로, 그리고 서버에서 클라이언트로 전송되는 데이터를 128Bit로 암호화 하고 기본 윈도우 인증 체계를 사용하도록 설정하기.
제어판 > 관리 도구 > 터미널 서비스 구성 > 연결 > RDP-Tcp
(암호화 수준을 '높음'으로 수정하고, '표준 Windows 인증 사용' 체크)
2. 기본적인 터미널 서비스 포트 3389/tcp를 다른 포트로 변경하기.
내 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrnetControlSet\Control\Terminal Server\WinStations\RDP-Tcp
내 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrnetControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
('PortNumber' 10진수에서 3386을 변경할 포트번호로 수정)
제어판 > 관리 도구 > 터미널 서비스 구성 > 연결 > RDP-Tcp
(암호화 수준을 '높음'으로 수정하고, '표준 Windows 인증 사용' 체크)
2. 기본적인 터미널 서비스 포트 3389/tcp를 다른 포트로 변경하기.
내 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrnetControlSet\Control\Terminal Server\WinStations\RDP-Tcp
내 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrnetControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
('PortNumber' 10진수에서 3386을 변경할 포트번호로 수정)
리눅스 시스템의 소프트레벨 커널 튜닝
# vi /etc/sysctl.conf
// ping 요청 무시
net.ipv4.icmp_echo_ignore_all=1
//소스 라우팅 차단
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
// syncookies 설정
net.ipv4.tcp_syncookies=1
// ICMP redirect 차단
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
// 로그 남김
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.lo.log_martians=1
net.ipv4.conf.eth0.log_martians=1
net.ipv4.conf.default.log_martians=1
// 패킷 포워딩 차단
net.ipv4.ip_forward=0
/etc/sysctl.conf 파일의 변경 내용을 적용
# sysctl -p /etc/sysctl.conf
// ping 요청 무시
net.ipv4.icmp_echo_ignore_all=1
//소스 라우팅 차단
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
// syncookies 설정
net.ipv4.tcp_syncookies=1
// ICMP redirect 차단
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
// 로그 남김
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.lo.log_martians=1
net.ipv4.conf.eth0.log_martians=1
net.ipv4.conf.default.log_martians=1
// 패킷 포워딩 차단
net.ipv4.ip_forward=0
/etc/sysctl.conf 파일의 변경 내용을 적용
# sysctl -p /etc/sysctl.conf
Solaris의 syslog.conf 설정
syslog.conf는 시스템에서 발생하는 정보들의 기록을 설정하는 파일이다.
** facility **
: 해당되는 객체로서 예를 들어 메일 / 유저 / 커널에 따른 어플리케이션으로 그 종류는 다음과 같다.
- kern : kernel에 의해 만들어진 메세지
- user : user process에 의해 만들어진 메세지
- mail : mail system에 의해 만들어진 메세지
- daemon : system daemon에 의해 만들어진 메세지 ex)in.telnetd
- auth : 인증시스템에 의해 만들어진 메세지 ex)login
- syslog : syslogd daemon에 의해 내부적으로 만들어진 메세지
- ipr : line printer spool system 에 의해 만들어진 메세지
- news : 뉴스 시스템에 의해 만들어진 메세지 *요즘엔 안씀*
- uucp : UNIX to UNIX copy system에 의해 만들어진 메세지 syslog fucntion 사용x
- cron : cron, at등에 의해 만들어진 메세지
- local0~7 : 사용자 정의를 위해 예약된 field
- mark : 잘사용하지 않는다.
* : mark를 제외한 모든 facility
** level **
: 객체에 대한 엄격도를 나타낸다.
등급 종류
- 0 emerg : 치명적인 상태로 일반적으로 모든사용자에게 알림
- 1 alert : 손상을 입은 시스템 데이터베이스와 같은 즉각적인 조치가 필요한 상태
- 2 crit : hard device 오류와 같은 치명적인 상태에 대한 알림
- 3 err : hard device 오류와는 다른 오류
- 4 warning : 경고메세지
- 5 notice : 특별한 조치가 필요로 하는 비오류 상태
- 6 info : 정보메세지
- 7 debug : 프로그램을 디버깅할때 사용되는 메세지
- 8 none : 특정 메세지를 제외시킬때 사용
** 0이 최상위, 8이 최하위 등급이다. **
** action **
: 객체에 대한 엄격도 정보가 기록되는 위치를 지정
- 파일경로 : /etc/syslog.conf
- 설정은 객체 와 action 으로 구성되고 객체는(facility&level)로 구성된다.
* 19번라인
- * : 모든 객체 , emrg : 치명적인상태 action : * -> 모든사용자
- 즉 시스템에서 사용하는 모든 객체가 치명적인상태가 될때 모든사용자에게 알린다.
* 17번라인
- 즉각적인 조치가 필요한 모든 객체에대한 정보를 루트에게 알린다.
* 16번라인
- *.alert;kern.err;daemon.err action : operater
- 모든 객체중에 즉각적인조치가 필요한경우 운영자에게 알리고 또 커널에 대한 오류// 데몬 오류 메세지 까지 운영자에게 알린다.
** 여기서 " ; " 세미콜론의 표시는 ~ 엄격도 이상을 나타날때 사용한다.
죽 *.alert; 는 모든객체의 엄격도 1번이상까지 즉 0번까지 알린다는것을 뜻한다.
* 13번라인
- /var/adm/meesages 파일 에 정보를 기록한다.
***** /var/adm 과 /var/run 의 차이점 *****
** /var/adm : 로그를 기록하는 디렉토리
- log : 과거부터 현재까지의 정보를 기록중인 data
** /var/run : 현재의 정보를 기록하는 디렉토리
피드 구독하기:
글 (Atom)
Reentrancy Attack: 블록체인 스마트 컨트랙트의 치명적인 취약점
블록체인 기술이 전 세계적으로 주목받으면서 스마트 컨트랙트(Smart Contract)의 사용이 급격히 증가하고 있습니다. 하지만 그만큼 보안 취약점도 함께 늘어나고 있는데, 그 중에서도 Reentrancy Attack(재진입 공격)은 매우 치명적이고...
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVoSf9jG9Tqh37erdszSR5UGvD95I2vJveHGDirDHYPCrsSxwUohRLDKwhyphenhyphen_LA7nEpIw3DveMT_zmqACnBmnebKTSS9KMRlL3hP3n_C6woK2V_brUXsQtxAOphBXtwyHtqSGIcJV21mGKZhU0KBeH-Rkvth6oJsRhyLtd2oMRV2BCfZ8luCXSTlXY6veK-/w320-h320/Reentrancy%20Attack%20%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8%20%EC%8A%A4%EB%A7%88%ED%8A%B8%20%EA%B3%84%EC%95%BD%EC%9D%98%20%EC%B9%98%EB%AA%85%EC%A0%81%20%EC%B7%A8%EC%95%BD%EC%A0%90.webp)
-
뉴스출처 : http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&oid=023&aid=0002991158&sid1=001 내 배우자가 바람을 피우는 것이 확실할까. 심증...
-
PHPSCHOOL ( http://www.phpschool.com ) 국내 1위의 PHP 개발자 커뮤니티 사이트이다. PHP Builder ( http://www.phpbuilder.com ) PHP 최고 사이트라고 해도 과언이 아니며, 새로운 P...