12.9. ±âŸ ¸í·É¾î

¸í·É¾î ¸ñ·Ï

jot, seq

ÀÌ À¯Æ¿¸®Æ¼µéÀº »ç¿ëÀÚ°¡ Á¤ÇÑ °£°Ý´ë·Î Á¤¼ö°ªÀ» Â÷·ÊÂ÷·Ê ¸¸µé¾î ³À´Ï´Ù. for ·çÇÁ¿¡¼­ ¾ÆÁÖ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù.

¿¹ 12-31. seq·Î ·çÇÁ¿¡ ÀÎÀÚ¸¦ ¸¸µé¾î ³Ö±â

#!/bin/bash

for a in `seq 80`  # ȤÀº      for a in $( seq 80 )
# for a in 1 2 3 4 5 ... 80   °ú ¶È°°½À´Ï´Ù(°úµµÇÑ Å¸ÀÌÇÎÀ» ¾È Çصµ µÇÁÒ!).
# ½Ã½ºÅÛ¿¡ 'jot'ÀÌ ÀÖ´Ù¸é ´ë½Å ¾µ ¼öµµ ÀÖ½À´Ï´Ù.
do
  echo -n "$a "
done
# "for" ·çÇÁÀÇ [list] ¸¦ ¸¸µé±â À§Çؼ­ ¸í·É¾îÀÇ Ãâ·ÂÀ» »ç¿ëÇÏ´Â ¿¹Á¦

echo; echo


COUNT=80  # 'seq'¿¡ º¯°æÇÒ ¼ö ÀÖ´Â ¸Å°³º¯¼ö¸¦ Á൵ µÇ´Â±º¿ä.

for a in `seq $COUNT`  # ȤÀº   for a in $( seq $COUNT )
do
  echo -n "$a "
done

echo

exit 0
run-parts

run-parts ¸í·É¾î [1] ´Â ´ë»ó µð·ºÅ丮¿¡ µé¾î ÀÖ´Â ¸ðµç ½ºÅ©¸³Æ®¸¦ ÆÄÀϸíÀ» ¾Æ½ºÅ° ¼ø¼­´ë·Î Â÷·Ê·Î ½ÇÇà½ÃÄÑ ÁÝ´Ï´Ù. ´ç¿¬ÇÑ À̾߱âÁö¸¸ ±× ½ºÅ©¸³Æ®µéÀº ½ÇÇà Æ۹̼ÇÀÌ °É·Á ÀÖ¾î¾ß µË´Ï´Ù.

crond µ¥¸óÀÌ /etc/cron.* µð·ºÅ丮¿¡ µé¾î ÀÖ´Â ½ºÅ©¸³Æ®¸¦ ½ÇÇà ½ÃÅ°±â À§ÇØ run-parts ¸¦ ½ÇÇà½Ãŵ´Ï´Ù.

yes

yesÀÇ ±âº» µ¿ÀÛÀº y¹®ÀÚ¿Í ¶óÀÎ Çǵ带 Ç¥ÁØÃâ·ÂÀ¸·Î °è¼Ó »Ñ¸®´Âµ¥ control-c·Î ¸ØÃâ ¼ö ÀÖ½À´Ï´Ù. yes ´Ù¸¥ ¹®ÀÚ¿­Ã³·³ ÇÏ¸é ´Ù¸¥ ¹®ÀÚ¿­À» °è¼Ó »Ñ·Á ÁÝ´Ï´Ù. ±×·¯¸é ¿Ö ÀÌ·± ¸í·É¾î°¡ ÇÊ¿äÇÒ±î¿ä? ¸í·É¾î ÁÙÀ̳ª ½ºÅ©¸³Æ® »ó¿¡¼­ »ç¿ëÀÚ ÀÔ·ÂÀ» ¿øÇÏ´Â ÇÁ·Î±×·¥¿¡°Ô yesÀÇ Ãâ·ÂÀ» ÀçÁöÇâ ½ÃÅ°°Å³ª ÆÄÀÌÇÁ¸¦ ÅëÇØ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç½Ç, ÀÌ ¸í·É¾î´Â expectÀÇ °£´ÜÇÑ ¹öÀüÀÔ´Ï´Ù.

yes | fsck /dev/hda1 ¶ó°í Çϸé fsck¸¦ ÇÑ ¹æ¿¡ ½ÇÇà(non-interactive)½Ãŵ´Ï´Ù(Á¶½ÉÇϼ¼¿ä!).

yes | rm -r dirname ´Â rm -rf dirname¶ó°í ÇÑ °Í°ú °°Àº È¿°ú¸¦ °®½À´Ï´Ù(Á¶½ÉÇϼ¼¿ä!).

ÁÖÀÇ

yes¸¦ fsck ³ª fdisk ó·³ ¾î¼¸é À§ÇèÇÒ ¼öµµ ÀÖ´Â ½Ã½ºÅÛ ¸í·É¾î¿¡ ÆÄÀÌÇÁ¸¦ °É ¶§´Â ¾ÆÁÖ Á¶½ÉÇØ¾ß µË´Ï´Ù.

banner

ÁÖ¾îÁø ÀÎÀÚ¸¦ ¾Æ½ºÅ° ¹®ÀÚ·Î ÀÌ·ç¾îÁø(±âº»Àº '#') Å« ¼öÁ÷ ¹è³Ê·Î ¸¸µé¾î Ç¥ÁØÃâ·ÂÀ¸·Î Ãâ·ÂÇØ ÁÝ´Ï´Ù. ÇÁ¸°ÅÍ·Î ÀçÁöÇâ½ÃÄÑ ½ÇÁ¦·Î Ãâ·ÂÇØ º¼ ¼öµµ ÀÖ½À´Ï´Ù.

printenv

ƯÁ¤ »ç¿ëÀÚÀÇ ¸ðµç ȯ°æ º¯¼öµéÀ» º¸¿©ÁÝ´Ï´Ù.

bash$ printenv | grep HOME
HOME=/home/bozo
	      

lp

lp¿Í lprÀº ÆÄÀÏÀ» ÇÁ¸°Æ® Å¥·Î º¸³»¼­ ÇÁ¸°ÅÍ·Î Ãâ·ÂÇϱâ À§ÇØ ¾²ÀÌ´Â ¸í·É¾îÀÔ´Ï´Ù. [2] ÀÌ ¸í·É¾îµéÀÇ À̸§Àº ¿¾³¯ ¶óÀÎ ÇÁ¸°ÅÍ(line printer)¸¦ ¾²´ø ½ÃÀý¿¡¼­ À¯·¡ µÆ½À´Ï´Ù.

bash$ lp file1.txt ¶ó°í Çϰųª bash$ lp <file1.txt

Çü½ÄÈ­µÈ Ãâ·ÂÀ» ¾ò±â À§ÇØ pr¿¡¼­ lp·Î ÆÄÀÌÇÁ¸¦ ¿¬°áÇؼ­ ÀÚÁÖ ¾²ÀÔ´Ï´Ù.

bash$ pr -options file1.txt | lp

groffÀ̳ª °í½ºÆ®½ºÅ©¸³Æ®(ghostscript)°°Àº Çü½ÄÈ­ ÆÐÅ°ÁöµéÀº ÀÚ½ÅÀÇ Ãâ·ÂÀ» lp·Î Á÷Á¢ º¸³»±âµµ ÇÕ´Ï´Ù.

bash$ groff -Tascii file.tr | lp

bash$ gs -options | lp file.ps

°ü·Ã ¸í·É¾î·Î´Â ÇÁ¸°Æ® Å¥¸¦ º¸±â À§ÇÑ lpq³ª ÇÁ¸°Æ® Å¥¿¡¼­ ƯÁ¤ ÀÛ¾÷À» Áö¿ì±â À§ÇÑ lprmÀÌ ÀÖ½À´Ï´Ù.

tee

[À¯´Ð½º´Â ¼öµµ¾÷°è¿¡¼­ ÀÌ ¾ÆÀ̵ð¾î¸¦ ¾ò¾ú½À´Ï´Ù.]

ÀÌ ¸í·É¾î´Â ÀçÁöÇâ ¿¬»êÀÚÀ̱ä ÇÏÁö¸¸ ¾à°£ ´Ù¸¨´Ï´Ù. ¼öµµ ¹è°ü°øÀÇ tee(TÀÚÇü ¹è°ü ÆÄÀÌÇÁ)ó·³ ´ÜÀÏ ¸í·É¾î³ª ÆÄÀÌÇÁÀÇ ÀϺκÐÀ¸·Î µ¿ÀÛÇÏ´Â ¸í·É¾îÀÇ Ãâ·ÂÀ» "»¡¾Æ µé¿©" ´Ù¸¥ °÷À¸·Î µ¿ÀÏÇÑ °á°ú¸¦ º¹»çÇØ ³»Áö¸¸ °á°ú¿¡´Â ¾Æ¹« ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. ÁøÇàÁßÀÎ ÇÁ·Î¼¼½ºÀÇ »óȲÀ» ÆÄÀÏÀ̳ª Á¾ÀÌ·Î Ãâ·ÂÇÒ ¶§ À¯¿ëÇѵ¥, º¸ÅëÀº µð¹ö±ë ¿ëµµ·Î ¾²¿© Áß°£ °á°ú°ªÀ» ÃßÀûÇϴµ¥ ¾²ÀÔ´Ï´Ù.

                   tee
                 |------> ÆÄÀÏ·Î
                 |
  ===============|===============
  ¸í·É¾î --->----|-¿¬»êÀÚ--->---> ¸í·É¾îÀÇ °á°ú
  ===============================
          

cat listfile* | sort | tee check.file | uniq > result.file
(check.fileÀº uniq°¡ Áߺ¹µÈ ÁÙÀ» Áö¿ì±â ÀüÀÇ »óÅÂÀÎ cat listfile* | sort ±îÁöÀÇ »óŸ¦ °®°í ÀÖ½À´Ï´Ù.)

mkfifo

À̸§ÀÌ ¾à°£ ¾Ö¸ÅÇÑ ÀÌ ¸í·É¾î´Â ³×ÀÓµå ÆÄÀÌÇÁ(named pipe)¸¦ ¸¸µé¾î ³À´Ï´Ù. ³×ÀÓµå ÆÄÀÌÇÁ¶õ ÇÁ·Î¼¼½º³¢¸® µ¥ÀÌŸ¸¦ ÁÖ°í ¹ÞÀ» ¼ö ÀÖµµ·Ï ÇÏ´Â Àӽà first-in-first-out ¹öÆÛ¸¦ °¡¸£Å°´Â ¸»ÀÔ´Ï´Ù. [3] ÀüÇüÀûÀÎ ½Ã³ª¸®¿À´Â ÇÑ ÇÁ·Î¼¼½º°¡ FIFO¿¡ µ¥ÀÌŸ¸¦ ¾²°í ´Ù¸¥ ÇÁ·Î¼¼½º´Â ±× µ¥ÀÌŸ¸¦ ÀÐ¾î °¡´Â °ÍÀÔ´Ï´Ù. ¿¹ A-10¸¦ Âü°íÇϼ¼¿ä.

pathchk

ÆÄÀϸíÀÌ ¿Ã¹Ù¸¥Áö ¾Æ´ÑÁö¸¦ È®ÀÎÇØ ÁÝ´Ï´Ù. ÆÄÀϸíÀÌ ÃÖ´ë Çã¿ë °¡´É ±æÀÌ(255 ±ÛÀÚ)¸¦ ³Ñ´Â´Ù°Å³ª ÀÚ±â À̸§¿¡ µé¾î ÀÖ´Â °æ·ÎÁß Çϳª ÀÌ»óÀÇ µð·ºÅ丮°¡ ãÀ» ¼ö ¾ø´Ù°Å³ª ÇÒ °æ¿ì¿¡´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ ¹ß»ý½Ãŵ´Ï´Ù. ºÒÇàÇÏ°Ôµµ pathchk´Â ¾Ë¾Æ º¼ ¼ö ÀÖ´Â ¿¡·¯ Äڵ带 ¸®ÅϽÃÅ°Áö ¾Ê±â ¶§¹®¿¡ ½ºÅ©¸³Æ® »ó¿¡¼­´Â ÀüÇô ¾µ¸ð°¡ ¾ø½À´Ï´Ù.

dd

¾îµòÁö ¸ð¸£°Ô ºÒ¸íÈ®ÇÏ°í ¾à°£Àº ¾²±â ²¨·ÁÇÏ´Â "µ¥ÀÌŸ º¹»ç±â"(data duplicator) ¸í·É¾îÀÔ´Ï´Ù. ¿ø·¡´Â ¸¶±×³×ƽ Å×ÀÌÇÁ¸¦ ÀÌ¿ëÇؼ­ À¯´Ð½ºÀÇ ¹Ì´Ï ÄÄÇ»ÅÍ¿Í IBMÀÇ ¸ÞÀÎÇÁ·¹ÀÓ°£¿¡ µ¥ÀÌŸ¸¦ ±³È¯Çϴµ¥ ¾²ÀÌ´ø À¯Æ¿¸®Æ¼Áö¸¸ ¾ÆÁ÷µµ ±× ¾²ÀÓ»õ°¡ ³²¾Æ ÀÖ½À´Ï´Ù. dd ¸í·É¾î´Â º¯È¯ °úÁ¤À» °ÅÃÄ ÆÄÀÏÀ̳ª Ç¥ÁØÀÔ·Â/Ç¥ÁØÃâ·ÂÀ» °£´ÜÈ÷ º¹»çÇØ ÁÝ´Ï´Ù. ¾Æ½ºÅ°/EBCDIC [4] °£ º¯È¯, ´ë¼Ò¹®ÀÚ°£ º¯È¯, ÀÔÃâ·Â°£ÀÇ ¹ÙÀÌÆ® ½ÖÀ» ¹Ù²Ù°Å³ª ÀÔ·Â ÆÄÀÏÀÇ Ã³À½À̳ª ³¡À» °Ç³Ê¶Ù°Å³ª À߶󳻼­ Ãâ·Â ÆÄÀÏÀ» ¸¸µé¾î ³»´Â µîÀÇ º¯È¯ÀÌ °¡´ÉÇÕ´Ï´Ù. dd --help ¶ó°í Çϸé ÀÌ °­·ÂÇÑ À¯Æ¿¸®Æ¼°¡ ó¸®ÇÒ ¼ö ÀÖ´Â º¯È¯ ¸ñ·Ï°ú ´Ù¸¥ ¿É¼ÇÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

# 'dd' ¿¬½ÀÇϱâ.

n=3
p=5
input_file=project.txt
output_file=log.txt

dd if=$input_file of=$output_file bs=1 skip=$((n-1)) count=$((p-n+1)) 2> /dev/null
# $input_file ÀÇ n ¿¡¼­ p ±îÁö ¹®ÀÚ¸¦ ÃßÃâÇØ ³»±â.




echo -n "hello world" | dd cbs=1 conv=unblock 2> /dev/null
# "hello world" ¸¦ ¼öÁ÷À¸·Î ¿¡ÄÚ½ÃÅ°±â


# Thanks, S.C.

dd°¡ ¾ó¸¶³ª ´ÙÀç´Ù´ÉÇÑÁö¸¦ º¸¿©ÁÖ±â À§Çؼ­ Å°º¸µå ÀÔ·ÂÀ» °¥¹«¸®Çϴµ¥ ½á º¸°Ú½À´Ï´Ù.

¿¹ 12-32. Å°º¸µå ÀÔ·ÂÀ» °¥¹«¸®Çϱâ

#!/bin/bash
# ENTER ¾øÀÌ Å°´©¸§À» °¥¹«¸®Çϱâ.


keypresses=4                      # °¥¹«¸®ÇÒ Å°´©¸§ ¼ö.


old_tty_setting=$(stty -g)        # ÇöÀçÀÇ Å͹̳Π¼¼ÆÃÀ» ÀúÀå.

echo "Å°¸¦ $keypresses ¹ø ´©¸£¼¼¿ä."
stty -icanon -echo                # ij³ë´ÏÄÃ(canonical) ¸ðµå ²ô±â.
                                  # ·ÎÄà ¿¡ÄÚ ²ô±â.
keys=$(dd bs=1 count=$keypresses 2> /dev/null)
# 'dd' ´Â "if" ¿É¼ÇÀÌ ¾øÀ¸¸é Ç¥ÁØÀÔ·ÂÀ» ¾¹´Ï´Ù.

stty "$old_tty_setting"           # ¿¹Àü Å͹̳Π¼¼ÆÃÀ¸·Î º¹±¸.

echo "\"$keys\" Å°¸¦ ´­·¶½À´Ï´Ù."

# S.C. °¡ ÀÌ ¹æ¹ýÀ» ¾Ë·ÁÁá½À´Ï´Ù.
exit 0

dd ¸í·É¾î´Â µ¥ÀÌŸ ½ºÆ®¸²¿¡ ´ëÇØ ·£´ýÇÑ Á¢±ÙÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
echo -n . | dd bs=1 seek=4 of=file conv=notrunc
# "conv=notrunc" ´Â Ãâ·Â ÆÄÀÏÀÌ À߸®Áö(truncated) ¾ÊÀ» °ÍÀ̶ó´Â ¿É¼ÇÀÔ´Ï´Ù.

# Thanks, S.C.

dd´Â Ç÷ÎÇdzª Å×ÀÔ µå¶óÀ̺ê(¿¹ A-5)°°Àº µð¹ÙÀ̽ºÀÇ raw µ¥ÀÌŸ³ª µð½ºÅ© À̹ÌÁö¿¡ Á÷Á¢ Á¢±ÙÇÒ ¼ö Àֱ⠶§¹®¿¡ º¸ÅëÀº ºÎÆ® Ç÷ÎÇǸ¦ ¸¸µé ¶§ ¾¹´Ï´Ù.

dd if=kernel-image of=/dev/fd0H1440

ºñ½ÁÇÏ°Ô, ½ÉÁö¾î "´Ù¸¥" OS ¿¡¼­ Æ÷¸ËµÈ µð½ºÄÏÀ» ÇÏµå µð½ºÅ©ÀÇ À̹ÌÁö ÆÄÀÏ·Î Åë°·Î º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù.

dd if=/dev/fd0 of=/home/bozo/projects/floppy.img

dd´Â Àӽà ½º¿Ò ÆÄÀÏÀ» ÃʱâÈ­ Çϰųª(¿¹ 29-2) ·¥µð½ºÅ©¸¦ ÃʱâÈ­Çϴµ¥(¿¹ 29-3) ¾µ ¼ö ÀÖ½À´Ï´Ù. ÃßõÇÒ¸¸ÇÑ ¹æ¹ýÀº ¾Æ´ÏÁö¸¸ Àüü ÇÏµå µå¶óÀ̺ê ÆÄƼ¼ÇÀ» Àú·¹º§·Î º¹»çÇØ ³¾ ¼öµµ ÀÖ½À´Ï´Ù.

¾Æ¸¶µµ ½Ã°£ÀÌ ³²¾Æµµ´Â »ç¶÷µéÀº dd¸¦ ¾î¶»°Ô Àç¹ÌÀÖ°Ô ¾µ ¼ö ÀÖÀ»Áö °è¼Ó »ý°¢ÇÒ °Ì´Ï´Ù.

¿¹ 12-33. ÆÄÀÏÀ» ¾ÈÀüÇÏ°Ô Áö¿ì±â

#!/bin/bash
# blotout.sh: ÆÄÀÏÀÇ ¸ðµç ±â·Ï Áö¿ì±â.

#  ÀÌ ½ºÅ©¸³Æ®´Â ´ë»ó ÆÄÀÏÀ» Áö¿ì±â Àü¿¡ 
#+ ÀÓÀÇÀÇ ¹ÙÀÌÆ®µé·Î µ¤¾î¾²°í, 0À¸·Î µ¤¾î¾²±â¸¦ ¹Ýº¹ÇÕ´Ï´Ù.
#  ÀÌ·¸°Ô ÇÏ°í ³ª¸é, µð½ºÅ© ¼½Å͸¦ ¹°¸®ÀûÀ¸·Î °Ë»çÇصµ
#+ ¿ø·¡ÀÇ ÆÄÀÏ µ¥ÀÌŸ¸¦ ã¾Æ ³¾ ¼ö ¾ø½À´Ï´Ù.

PASSES=7         # ÆÄÀÏ Á¶°¢(file-shredding) ´Ü°è.
BLOCKSIZE=1      #  /dev/urandom À¸·Î I/O ¸¦ ÇÒ ¶§ ÇÊ¿äÇÑ À¯´Ö ºí·° Å©±â.
                 #+ ÀÌ Å©±â°¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é ÀÌ»óÇÑ °á°ú°¡ ³ª¿É´Ï´Ù.
E_BADARGS=70
E_NOT_FOUND=71
E_CHANGED_MIND=72

if [ -z "$1" ]   # ÆÄÀÏÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ½.
then
  echo "»ç¿ë¹ý: `basename $0` filename"
  exit $E_BADARGS
fi

file=$1

if [ ! -e "$file" ]
then
  echo "\"$file\" ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½."
  exit $E_NOT_FOUND
fi  

echo; echo -n "\"$file\" ÆÄÀÏÀ» Á¤¸»·Î ¿ÏÀüÈ÷ Áö¿ö ¹ö¸®°Ú½À´Ï±î(y/n)? "
read answer
case "$answer" in
[nN]) echo "Çϱ⠽ȴٱ¸¿ä?"
      exit $E_CHANGED_MIND
      ;;
*)    echo "\"$file\" ÆÄÀÏÀ» ¿ÏÀüÈ÷ Áö¿ì´Â Áß.";;
esac


flength=$(ls -l "$file" | awk '{print $5}')  # 5 ¹ø° Çʵ尡 ÆÄÀÏ ±æÀÌ.

pass_count=1

echo

while [ "$pass_count" -le "$PASSES" ]
do
  echo "$pass_count ¹ø° ´Ü°è"
  sync         # ¹öÆÛ Ç÷¯½¬.
  dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength
               # ÆÄÀÏÀ» ÀÓÀÇÀÇ ¹ÙÀÌÆ®µé·Î µ¤¾î¾¸.
  sync         # ´Ù½Ã ¹öÆÛ Ç÷¯½¬.
  dd if=/dev/zero of=$file bs=$BLOCKSIZE count=$flength
               # ÆÄÀÏÀ» 0À¸·Î µ¤¾î¾¸.
  sync         # ¶Ç ´Ù½Ã ¹öÆÛ Ç÷¯½¬.
  let "pass_count += 1"
  echo
done  


rm -f $file    # ¸¶Áö¸·À¸·Î, ¿ÂÅë µÚ¼¯ÀÌ°í Á¶°¢³ª ¹ö¸° ÆÄÀÏÀ» »èÁ¦.
sync           # ¸¶Áö¸· ¹öÆÛ Ç÷¯½¬.

echo "\"$file\" ÆÄÀÏÀÌ ¿ÏÀüÈ÷ »èÁ¦µÇ¾ú½À´Ï´Ù."; echo


#  ÀÌ ½ºÅ©¸³Æ®´Â ÆÄÀÏÀ» ¿ÏÀüÈ÷ "Á¶°¢³»´Âµ¥"(shredding) ºñÈ¿À²ÀûÀÌ°í ´À¸° ¹æ¹ýÀ» 
#+ ¾´ °Í¸¸ »©¸é Á¤¸» ¾ÈÀüÇÕ´Ï´Ù. GNU "fileutils" ÆÐÅ°ÁöÁßÀÇ ÇϳªÀÎ
#+ "shred" ¸í·É¾îµµ ¶È°°Àº ÀÏÀ» ÇÏÁö¸¸ Á» ´õ È¿À²ÀûÀÔ´Ï´Ù.

#  ÀÌ ½ºÅ©¸³Æ®·Î Áö¿öÁø ÆÄÀÏÀº ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î´Â "undelete"µÇ°Å³ª
#+ º¹±¸ÇØ ³¾ ¼ö ¾ø½À´Ï´Ù.
#  ÇÏÁö¸¸...
#+ ÀÌ·± °£´ÜÇÑ ¹æ¹ýÀº °úÇÐÀûÀÎ ºÐ¼®(forensic analysis)±îÁö ¸·¾Æ³»Áö´Â ¸øÇÕ´Ï´Ù.


#  Tom VierÀÇ "wipe" ÆÄÀÏ »èÁ¦ ÆÐÅ°Áö´Â ÀÌ °£´ÜÇÑ ½ºÅ©¸³Æ®º¸´Ù Á» ´õ 
#+ ¿ÏÀüÇÏ°Ô ÆÄÀÏÀ» Áö¿ö ÁÝ´Ï´Ù.
#     http://www.ibiblio.org/pub/Linux/utils/file/wipe-2.0.0.tar.bz2

#  ÆÄÀÏ »èÁ¦¿Í º¸¾È¿¡ ´ëÇؼ­ Á» ´õ ÀÚ¼¼ÇÏ°Ô ¾Ë°í ½Í´Ù¸é,
#+ Peter GutmannÀÇ ³í¹®À» Âü°íÇϱ⠹ٶø´Ï´Ù.
#+     "Secure Deletion of Data From Magnetic and Solid-State Memory".
#           http://www.cs.auckland.ac.nz/~pgut001/secure_del.html


exit 0
od

od(8Áø ´ýÇÁ, octal dump) ¸í·É¾î´Â ÀÔ·Â(ȤÀº ÆÄÀÏ)À» 8Áø¼ö³ª ´Ù¸¥ Áø¼ö·Î º¯È¯ÇØ ÁÝ´Ï´Ù. od´Â ¹ÙÀ̳ʸ® µ¥ÀÌŸ ÆÄÀÏÀ̳ª /dev/urandom °°Àº ÀÐÀ» ¼ö ¾ø´Â ½Ã½ºÅÛ µð¹ÙÀ̽º ÆÄÀÏÀ» Àаųª ó¸®ÇÏ·Á°í ÇÒ ¶§ ÇÊÅÍ·Î ¾µ ¼ö ÀÖ´Â À¯¿ëÇÑ ¸í·É¾îÀÔ´Ï´Ù. ¿¹ 9-21°ú ¿¹ 12-10¸¦ Âü°íÇϼ¼¿ä.

hexdump

ÀÌÁø ÆÄÀÏÀ» 16Áø¼ö³ª 8Áø¼ö, 10Áø¼ö, ¾Æ½ºÅ°·Î ´ýÇÁ¸¦ ¶ä. ÀÌ ¸í·É¾î´Â À§¿¡¼­ ¼³¸íÇß´ø od¿Í °ÅÀÇ ºñ½ÁÇÏÁö¸¸ ±×·¸°Ô ¾µ¸ð°¡ ÀÖÁö´Â ¾Ê½À´Ï´Ù.

m4

¼û°ÜÁø º¸¹°ÀÎ m4´Â °­·ÂÇÑ ¸ÅÅ©·Î ÇÁ·Î¼¼¼­ [5] À¯Æ¿¸®Æ¼À̳ª °ÅÀÇ ¿ÏÀüÇÑ ¾ð¾î¿¡ °¡±õ½À´Ï´Ù. m4´Â »ç½Ç eval, tr, awkÀÇ ¸î°¡Áö ±â´ÉµéÀ» ¹­¾î ³õÀº °ÍÀÔ´Ï´Ù.

¿¹ 12-34. m4 ¾²±â

#!/bin/bash
# m4.sh: m4 ¸ÅÅ©·Î ÇÁ·Î¼¼¼­ ¾²±â.

# ¹®ÀÚ¿­
string=abcdA01
echo "len($string)" | m4                       # 7
echo "substr($string,4)" | m4                  # A01
echo "regexp($string,[0-1][0-1],\&Z)" | m4     # 01Z

# »ê¼ú½Ä
echo "incr(22)" | m4                           # 23
echo "eval(99 / 3)" | m4                       # 33

exit 0

ÁÖ¼®

[1]

»ç½Ç ÀÌ ¸í·É¾î´Â µ¥ºñ¾È ¸®´ª½º ¹èÆ÷ÆÇ¿¡¼­ ¾²´ø °ÍÀÔ´Ï´Ù.

[2]

ÇÁ¸°Æ® Å¥¶õ ÇÁ¸°Æ®¸¦ À§ÇØ "¼ø¼­´ë·Î ´ë±â"ÇÏ°í ÀÖ´Â ÀÛ¾÷ ±×·ìÀ» ¸»ÇÕ´Ï´Ù.

[3]

Andy Vaught°¡ ¸®´ª½º Àú³Î¿¡ 1997³â 9¿ù¿¡ ±â°íÇÑ Introduction to Named Pipes¶õ ¾ÆÁÖ ÈǸ¢ÇÑ ¹®¼­¸¦ Âü°íÇϼ¼¿ä.

[4]

EBCDIC (¹ßÀ½Àº "¿¦½Ãµñ", ebb-sid-ic) Àº Extended Binary Coded Decimal Interchange Code ÀÇ Ã¹ ±ÛÀÚ¸¸ µý µÎ¹®ÀÚ¾îÀÔ´Ï´Ù. IBM ÀÇ µ¥ÀÌŸ Æ÷¸ËÀ¸·Î ´õ ÀÌ»ó ¾²ÀÌÁö ¾Ê½À´Ï´Ù. conv=ebcdic ¿É¼ÇÀÇ ÀÌ»óÇÑ ÀÀ¿ëÀ¸·Î´Â ¾ÆÁÖ ºü¸£°í °£´ÜÇÏÁö¸¸ ±×·¸°Ô ¾ÈÀüÇÏÁö´Â ¾ÊÀº ÅؽºÆ® ÆÄÀÏ ÀÎÄÚ´õ·Î ¾µ ¼ö ÀÖ½À´Ï´Ù.
cat $file | dd conv=swab,ebcdic > $file_encrypted
# ÀÎÄÚµå(¾ð¶æ ºÁ¼­´Â ¾Ë¾Æº¼ ¼ö°¡ ¾ø½À´Ï´Ù).		    
# ´õ ÀÌÇØÇϱâ Èûµé°Ô ÇØ·Á¸é ¹ÙÀÌÆ®¸¦ ½º¿Ò(swab)½Ãų ¼öµµ ÀÖ½À´Ï´Ù.

cat $file_encrypted | dd conv=swab,ascii > $file_plaintext
# µðÄÚµå.

[5]

¸ÅÅ©·Î´Â ¸í·É¾î ¹®ÀÚ¿­À̳ª ¸Å°³º¯¼ö¿¡ µû¶ó ¿©·¯°¡Áö ¿¬»êÀ¸·Î È®ÀåµÇ´Â ½Éº¼¸¯ »ó¼öÀÔ´Ï´Ù.