|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
ÆÄÀϺ¯Á¶°Ë»ç
ÇöÀç ÀÎÅͳÝÀÇ °¡ÀåÅ« À̽´´Â º¸¾ÈÀÌ´Ù.
ÀÌ ¹®¼´Â ÀÌ·¯ÇÑ º¸¾È¹®Á¦Áß È£½ºÆ®´Ü¿¡¼ ÀϾ¼ö ÀÖ´Â
ÆÄÀϺ¯Á¶¿Í °ü·ÃµÈ ¹®Á¦¿Í ±× ÇØ°áÀ» À§ÇÑ °£´ÜÇÑ
ÇØ°áÃ¥À» Á¦½ÃÇØº¸°íÀÚ ÇÑ´Ù.
ÀÌ·¯ÇÑ ¹®Á¦ÀÇ ÇØ°áÀ» À§Çؼ MD5 ÇØ½¬ ¾Ë°í¸®Áò°ú STLÀÇ
¸î°¡Áö ÄÁÅ×ÀÌ³Ê¿Í ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ°Ô µÉ°ÍÀÌ´Ù.
ÀÏ´Ü Å©·¡Ä¿°¡ ¾î¶²¹æ¹ýÀ» ÅëÇØ¼µçÁö Å©·¡Å·ÇϰíÀÚÇÏ´Â
¸ñÀû È£½ºÆ®¿¡ Á¢±ÙÇß´Ù¸é, ÀÌ Å©·¡Ä¿°¡ ´Ü¼øÇѸñÀû
- ÀÓÀÇÀÇ ÆÄÀϵéÀ» ¹«ÀÛÀ§·Î »èÁ¦ÇѴٰųª, ´Ü¼øÈ÷ ÀÚ½ÅÀÇ ½Ç·Â
À» Å×½ºÆ®ÇÒ¸ñÀû - ÀÌ ¾Æ´Ï¶ó¸é, Áö¼ÓÀûÀ¸·Î È£½ºÆ®¸¦ °¨½ÃÇϸé¼
Áß¿ä µ¥ÀÌŸµéÀ» ¼öÁýÇϱ⸦ ¿øÇÒ°ÍÀÌ´Ù. ½ÉÇÒ°æ¿ì
ƯÁ¤ ¸í·ÉÀ» ¼öÇàÇϸé(ls °°Àº) ¾Æ¿¹ ¸ðµç ÆÄÀÏÀÌ »èÁ¦µÇ¾î ¹ö¸®µµ·Ï
¸¸µé¼öµµ ÀÖÀ»°ÍÀÌ´Ù.
ȤÀº ƯÁ¤ À¥ÆäÀÌÁö¸¦ º¯Á¶ÇÏ´Â ÀÛ¾÷µîÀ» ÇÒ¼ö Àִµ¥,
¾î¶² °æ¿ìÀÌ´øÁö °£¿¡ ±â¾÷¿¡ ÁÁÁö ¾ÊÀº °á°ú¸¦ ÃÊ·¡ÇÒ°ÍÀÌ´Ù.
ƯÈ÷ ÀÎÅͳÝÀ» ÅëÇØ ÆÄÀÏÀ» ÁÖ°í ¹ÞÀ»°æ¿ì ÆÄÀÏÀÌ º¯Á¶µÇ¾ú´ÂÁö¸¦
È®ÀÎÇÏ´Â °ÍÀº ´õ¿í Áß¿äÇØÁø´Ù. APM
[1]
¼³Ä¡¸¦ Çϱâ À§Çؼ
¾î¶² »çÀÌÆ®¿¡¼ php½î¾²¸¦ ´Ù¿î¹Þ¾Ò´Ù°í ÇÏÀÚ.
±×·±µ¥, ÀÌ PHP½î¾²°¡
º¯Á¶°¡ µÇ¾î¼ ¾ÇÀÇÀûÀÎ Äڵ尡 µé¾î°¡ ÀÖ´ÂÁö´Â 100% Àå´ãÇÒ¼ö
¾øÀ»°ÍÀÌ´Ù. ½ÉÁö¾î´Â php.net »çÀÌÆ®¿¡¼ ¹Þ¾Ò´Ù°í ÇÏ´õ¶óµµ 100%
¾ÈÀüÇÑ ÄÚµå¶ó´Â°É È®ÀÎÇÒ¼ö ¾øÀ»°ÍÀ̸ç, ½ÇÁ¦·Î ½É½ÉÂú°Ô
"¾î´À »çÀÌÆ®¿¡¼ ¹ÞÀº ½î¾²´Â º¯Á¶µÇ¾îÀÖÀ½À¸·Î »ç¿ëÇϰí ÀÖÀ»°æ¿ì
¾÷µ¥ÀÌÆ® ½ÃŰ¼¼¿ä" ¶ó´Â º¸¾È °æ°í°¡ ÀÎÅÍ³Ý »ó¿¡ ¹ßÇ¥µÇ°ï ÇÑ´Ù.
Æò¼Ò º¸¾È¹®Á¦¿¡ °ü½ÉÀ» °¡Áö°í ÀÖ¾ú´Ù¸é, sendmail
"½î¾²°¡ º¯Á¶µÇ¾ú³×, ¾î¶² ½î¾²°¡ º¯Á¶µÇ¾úÀ¸´Ï ´Ù½Ã
¼³Ä¡ÇØ¾ß Çϳ×.."
ÇÏ´Â º¸¾È¼Ò½ÄÀ» Á¢Çغ¸¾ÒÀ»°ÍÀÌ´Ù.
±×·¡¼ ¿äÁò¿¡´Â ÀÎÅͳݻ󿡼 ÆÄÀÏÀ» Àü¼ÛÇÒ°æ¿ì
"md5 ¹®ÀÚ" ±îÁö¸¦ ÇÔ²² Àü¼ÛÇØ¼ º¯Á¶µÈ ÆÄÀÏÀÌ ¾Æ´ÔÀ»
È®ÀÎÇÒ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù. md5 ´Â ´Ü¹æÇâ hash ¾Ë°í¸®ÁòÀ»
Á¦°øÇØÁÖ´Â ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é ¾î¶°ÇÑ µ¥ÀÌŸ¿¡
´ëÇØ¼ 128 ºñÆ®ÀÇ Å©±â¸¦ °¡Áö´Â ¸Þ½ÃÁö Ãà¾àÀ»
¸¸µêÀ¸·Î½á µ¥ÀÌŸ¿¡ ´ëÇÑ ¹«°á¼ºÀ» °ËÁõÇÒ¼ö ÀÖ´Ù.
±×·³ ½ÇÁ¦ ¿¹¸¦ Çϳª µé¾îº¸µµ·Ï ÇϰڴÙ.
www.php.net ¿¡ °¡¸é ¿©·¯°¡Áö ½î¾²ÆÄÀÏÀ» ¹èÆ÷Çϸé¼
½î¾²ÆÄÀÏ¿¡ ´ëÇÑ ¹«°á¼ºÀ» °ËÁõ½ÃÄÑÁÖ±â À§Çؼ
md5 ¹®ÀÚ¿±îÁö °°ÀÌ Á¦°øÇÑ´Ù.
¿©·¯ºÐÀÌ ÀÌ »çÀÌÆ®¿¡¼ ¾î¶² ½î¾²ÆÄÀÏÀ» ¹Þ¾Ò´Âµ¥,
°ú¿¬ ¿øº»±×´ë·ÎÀÇ ÆÄÀÏÀÎÁö¸¦ °ËÁõ¹Þ°í ½Í´Ù¸é, ÇØ´ç ÆÄÀÏ¿¡ ´ëÇÑ
md5 ¹®ÀÚ¿À» ¾ò¾î¼ www.php.net ÀÇ md5 ¹®ÀÚ¿°ú ÀÏÄ¡ÇÏ´ÂÁö¸¦
È®ÀÎÇÏ¸é µÈ´Ù.
ÇÊÀÚ´Â www.php.net ¿¡¼ PHP 4.2.0 to 4.2.2 patch ¶ó´Â
ÆÐÄ¡ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ¾Ò´Ù. ´ÙÀ½Àº www.php.net ¿¡¼
Á¦°øÇÏ´Â ÆÐÄ¡ÆÄÀϰú ÀÌ ÆÐÄ¡ÆÄÀÏ¿¡ ´ëÇÑ md5 °ªÀÌ´Ù.
PHP 4.2.0 to 4.2.2 patch [313Kb] - 22 July 2002
This unified diff will enable you to update your local PHP source to the latest version from 4.2.0.
md5: 254bccc245d65cece1f40f782b70ec6b
|
À§ ÆÐÄ¡ÆÄÀÏÀÇ ¹«°á¼ºÀ» Á¡°ËÇÏ°í ½Í´Ù¸é
ÀÎÅͳÝÀ» ÅëÇØ¼ À§ÀÇ ÆÄÀÏÀ» ´Ù¿î·Îµå¹Þ°í, ´Ù¿î·Îµå ¹ÞÀº
ÆÄÀÏ¿¡¼ md5 Ãà¾à¸Þ½ÃÁö¸¦ ¾ò¾î³½ÈÄ, ¾ò¾î³½ ¸Þ½ÃÁö¿Í
www.php.net ¿¡¼ Á¦°øÇÑ md5 ¸Þ½ÃÁö¿Í ÀÏÄ¡ÇÏ´ÂÁö¸¦
È®ÀÎÇÏ¸é µÈ´Ù.
´ÙÀ½Àº ƯÁ¤ ÆÄÀÏ·Î ºÎÅÍ md5 Ãà¾à ¸Þ½ÃÁö¸¦ ¾ò¾î³»´Â
°£´ÜÇÑ ÄÚµåÀÌ´Ù.
¿¹Á¦ : getmd5.c
#include <openssl/md5.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
int main(int argc, char **argv)
{
MD5_CTX lctx;
unsigned char digest[16];
char md5msg[40];
int i;
int fd;
struct stat status;
char *file_name = argv[1];
char *data;
MD5_Init(&lctx);
fd = open(file_name, O_RDONLY);
if (fd < 0)
{
perror("error : ");
exit(0);
}
fstat(fd, &status);
data = (char *)malloc(status.st_size);
read (fd, data, status.st_size);
MD5_Update(&lctx, data, status.st_size);
MD5_Final(digest, &lctx);
for (i = 0; i < sizeof(digest); ++i)
{
sprintf(md5msg+(i*2), "%02x", digest[i]);
}
printf ("%s\n", md5msg);
free(data);
}
|
À§ ÄÚµå´Â Linux 2.4.x ¿î¿µÃ¼Á¦¿¡¼ openssl ¿¡¼ Á¦°øÇÏ´Â
MD5 ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÄÚµùµÇ¾ú´Ù.
´ÙÀ½Àº ÄÄÆÄÀÏ ¹æ¹ýÀÌ´Ù. ÄÚµå´Â ´ÜÁö MD5 ÇÔ¼ö¸î°³¸¦
»ç¿ëÇÏ´Â °ÍÀÓÀ¸·Î Ưº°È÷ ¼³¸íÇÏÁø ¾ÊÀ»°ÍÀÌ´Ù. MD5 ¾Ë°í¸®Áò¿¡
´ëÇÑ ³»¿ëµéÀº man ÆäÀÌÁö¿Í ÀÎÅͳÝÀÇ ´Ù¸¥ ¹®¼µéÀ»
Âü°íÇϱ⠹ٶõ´Ù.
gcc -o getmd5 getmd5.c -lssl -lcrypto
|
º¸Åë ÆÄÀÏ¿¡ ´ëÇÑ ¹«°á¼ºÁ¡°ËÀº ÆÄÀÏÀüü¿¡ ´ëÇØ¼ ÀÌ·ç¾îÁüÀ¸·Î
ÆÄÀÏÀ» open ÇÑÈÄ Àüü µ¥ÀÌŸ¸¦ ÀоîµéÀ̰í, ÀоîµéÀÎ µ¥ÀÌŸ¸¦
ÀÌ¿ëÇØ¼ md5 Ãà¾à ¸Þ½ÃÁö¸¦ ¾ò¾î³½´Ù.
ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ open(2), stat(2) ÇÔ¼öµéÀ» »ç¿ëÇß´Ù.
´ÙÀ½Àº À§ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼ Å×½ºÆ®ÇÑ °á°úÀÌ´Ù.
[root@localhost md5]# ./getmd5 php-4.2.0-to-4.2.2.patch.gz
254bccc245d65cece1f40f782b70ec6b
|
www.php.net ¿¡¼ Á¦°øÇÑ md5 ¹®ÀÚ¿Í Á¤È®ÇÏ°Ô ÀÏÄ¡Çϰí ÀÖÀ½À»
È®ÀÎÇÒ¼ö ÀÖ°í, ÀÌ·³À¸·Î½á ÀÌ ÆÐÄ¡ÆÄÀÏÀÇ ¹«°á¼ºÀ»
È®ÀÎÇÒ¼ö ÀÖ´Ù.
ÆÄÀÏÀÇ ³»¿ëÀÌ ´Þ¶óÁö¸é Á¤¸»·Î md5 °ªÀÌ ´Þ¶óÁö´ÂÁö È®ÀÎÇϱ⠿øÇÑ´Ù¸é
À§ÀÇ ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼ ƯÁ¤ ÆÄÀÏÀ» º¯°æÀüÈÄÀÇ md5 °ªÀ» ºñ±³Çϸé
µÉ°ÍÀÌ´Ù.
½Ã½ºÅÛÆÄÀϺ¸¾È ¿ª½Ã ±âº»ÀûÀ¸·Î´Â À§ÀÇ ÀÎÅÍ³ÝÆÄÀÏ º¸¾È°ú °°Àº ¹æ¹ýÀ»
ÀÌ¿ëÇØ¼ ±¸Çö°¡´ÉÇÏ´Ù. º¸¾ÈÀÌ ÇÊ¿äÇÑ ÆÄÀÏÀÇ ¸®½ºÆ®¸¦ ¸¸µç´ÙÀ½¿¡
°¢ÆÄÀÏ¿¡ ´ëÇÑ MD5 ¹®ÀÚ¿À» ¾òÀºÈÄ, ÀÌ µ¥ÀÌŸ¸¦ ÀúÀåÇØ ³õ°í,
ÀÏÁ¤½Ã°£ °£°ÝÀ¸·Î ÆÄÀÏÀÇ ¸®½ºÆ®¿¡ ´ëÇÑ MD5 ¹®ÀÚ¿À» °¡Á®¿Í¼,
óÀ½ ¸¸µé¾î ³õÀº MD5 ¹®ÀÚ¿°ú ºñ±³ÇÏ¸é µÉ°ÍÀÌ´Ù.
+----------------+----------------+ +----------------------------+
| ÆÄÀÏ ¸ñ·Ï | MD5 ¹®ÀÚ | <---- | MD5 ÇØ½¬¸ñ·Ï ÀÛ¼º ÇÁ·Î±×·¥ |
|---------------------------------| +----------------------------+
| /bin/login | 347717f89a ... |
| /bin/passwd | 1629a99f6c ... | +--------------------+
| /usr/bin/httpd | d044f3d3ad ... | ----> | ÆÄÀÏ °Ë»ç ÇÁ·Î±×·¥ |
| ... | ... | +--------------------+
+---------------------------------+
|
ÀÌÁ¦ ¾î¶²½ÄÀ¸·Î ÆÄÀÏÀÇ º¯Á¶ À¯¹«¸¦ °Ë»çÇÒ¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ
±âº»ÀûÀÎ ¾ÆÀ̵ð¾î¸¦ ¾ò¾úÀ¸´Ï, ¾ÆÀ̵ð¾î¸¦ ÄÚµå·Î ±¸ÇöÇØº¸µµ·Ï
ÇÏÀÚ. ÀÌ ¾ÆÀ̵ð¾î¸¦ ±¸ÇöÇϱâ À§Çؼ 2°³ÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ
¸¸µé¾îÁú°ÍÀÌ´Ù.
¿ì¼±Àº °Ë»çÇϱ⠿øÇÏ´Â ½Ã½ºÅÛÆÄÀÏÀÇ ¸ñ·ÏÀ» ¸¸µé¾î¾ß ÇÒ°ÍÀÌ´Ù.
±×¸®°í ¸¸µç ÆÄÀϸñ·Ï¿¡ ´ëÇÑ MD5 ¹®ÀÚ¿À» ±¸ÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ»
¸¸µé¾î¼ ÆÄÀÏ·Î ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
´ÙÀ½Àº ½ÇÁ¦ ÆÄÀÏÀ» °Ë»çÇÏ´Â ÇÁ·Î±×·¥À¸·Î ÆÄÀÏ°Ë»ç ¸ñ·Ï¿¡¼ ÆÄÀϸñ·Ï°ú
ÆÄÀÏ¿¡ ´ëÇÑ MD5 ¹®ÀÚ¸¦ Àоîµé¿©¼ ¸Þ¸ð¸®¿¡ ÀúÀåÇϰí,
ÀÏÁ¤½Ã°£¸¶´Ù ÆÄÀϸñ·ÏÀÇ ÆÄÀÏ¿¡ ´ëÇÑ MD5 ¹®ÀÚ¿À» ¾ò¾î¿Í¼ ¿ø·¡ÀÇ MD5 ¹®ÀÚ¿°ú
ÀÏÄ¡ÇÏ´ÂÁö °Ë»çÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
ÆÄÀÏ ¸ñ·Ï °Ë»ç¸¦ À§ÇÑ °¡Àå
°£´ÜÇÑ ¹æ¹ýÀº ÆÄÀÏ°Ë»ç ¸ñ·Ï°ú MD5 Á¤º¸¸¦ Àоîµé¿©¼ vector µîÀ»
ÀÌ¿ëÇØ¼ ¹è¿·Î ¸¸µé°í, ù¹øÂ° ¹è¿ºÎÅÍ ¸¶Áö¸· ¹è¿ÀÇ ÆÄÀϸñ·ÏÀ̸§À»
°¡Á®¿Í¼ ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ MD5 °Ë»ç¸¦ ¼öÇàÇØ¼ ¿øº» MD5 ¹®ÀÚ¿°ú ºñ±³ÇÏ´Â
¹æ¹ýÀÏ °ÍÀÌ´Ù.
°Ë»çÇÒ ÆÄÀÏÀ̸§ÀÌ µé¾îÀÖ´Â list.cfg ¸¦ Àоîµé¿©¼
ÆÄÀÏ¿¡ ´ëÇÑ md5 ¹®ÀÚ¿À» ¾ò¾î¿À°í, À̰ÍÀ» .listmd5.cfg
¿¡ ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. list.cfg ´Â ´ÙÀ½°ú °°Àº ³»¿ëÀ»
°¡Áø´Ù.
1.txt
2.txt
3.txt
4.txt
5.txt
|
´ÙÀ½Àº list.cfg ·ÎºÎÅÍ .listmd5.cfg ÆÄÀÏÀ» ¸¸µé¾î ³»´Â
ÄÚµåÀÌ´Ù. °£´ÜÇÑ ÄÚµåÀÓÀ¸·Î ¼³¸íÀº ÁÖ¼®À¸·Î ´ë½ÅÇϰڴÙ.
¿¹Á¦ : makelist.cc
#include <openssl/md5.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <vector>
using namespace std;
#define LISTFNAME "list.cfg"
#define LISTFMDNAME ".listmd5.cfg"
#define chop(str) str[strlen(str) - 1] = '\0'
typedef struct _filelist
{
char filename[80];
char md5[40];
} filelist;
int file2md5(char *, char *);
int main(int argc, char **argv)
{
int i;
FILE *fp;
struct stat status;
char *data;
filelist md5info;
vector<filelist> vmd5info;
char buf[80];
char md5msg[40];
// ¸®½ºÆ®¸¦ Àоî¿Í¼ ÆÄÀÏ ¸ñ·ÏÀ» ¸¸µç´Ù.
if ((fp = fopen(LISTFNAME, "r")) == NULL)
{
perror("error : ");
exit(0);
}
while(fgets(buf, 80, fp) != NULL)
{
chop(buf);
// md5 ¹®ÀÚ¸¦ ¾ò¾î¿Â´Ù.
file2md5(buf, md5msg);
strcpy(md5info.filename, buf);
strcpy(md5info.md5, md5msg);
// .listmd5.cfg ¿¡ ³»¿ëÀ» Àû´Â´Ù.
vmd5info.push_back(md5info);
}
fclose(fp);
if ((fp = fopen(LISTFMDNAME, "w")) == NULL)
{
perror("error : ");
exit(0);
}
for (int i = 0; i < vmd5info.size(); i++)
{
char listbuf[80];
sprintf(listbuf, "%s:=%s\n", vmd5info[i].filename, vmd5info[i].md5);
fputs(listbuf, fp);
}
fclose(fp);
}
// ÀÔ·ÂµÈ ÆÄÀÏ¿¡ ´ëÇÑ md5 ¹®ÀÚ¿À» ¾ò¾î¿Â´Ù.
int file2md5(char * file_name, char *md5msg)
{
char *data;
int fd;
int i;
struct stat status;
unsigned char digest[16];
char *x;
MD5_CTX lctx;
MD5_Init(&lctx);
fd = open(file_name, O_RDONLY);
if (fd < 0)
{
perror("error : ");
exit(0);
}
fstat(fd, &status);
data = (char *)malloc(status.st_size);
read (fd, data, status.st_size);
MD5_Update(&lctx, data, status.st_size);
MD5_Final(digest, &lctx);
for (i = 0; i < sizeof(digest); ++i)
{
sprintf(md5msg+(i*2), "%02x", digest[i]);
}
free(data);
close(fd);
return 1;
}
|
À§ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÑÈÄ ½ÇÇà½Ã۸é - ¹°·Ð ±×Àü¿¡ list.cfg ¿Í °Ë»çÇÒ ÆÄÀϵéÀ»
¹Ì¸® ÁغñÇØ¾ß ÇÑ´Ù - ´ÙÀ½°ú °°Àº .listmd5.cfg ÆÄÀÏÀÌ ¸¸µé¾îÁú°ÍÀÌ´Ù.
1.txt:=fb20e95d00a91f81936f84dc0fb3f770
2.txt:=c34f2efffd4a8079cec1aff2c5dc98f0
3.txt:=5da1f11dd590919eb2465151fbaad137
4.txt:=b3f56e50a03224ce395eb4c34c6322da
5.txt:=6ceadb3fae1a5a893b9c39dfa64e19b7
|
ÀÌÁ¦ º»°ÝÀûÀ¸·Î ÆÄÀϺ¯Á¶ °Ë»ç ÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚ.
ÀÌ ÇÁ·Î±×·¥Àº .listmd5.cfg ÀÇ ³»¿ëÀ» ÀоîµéÀ̰í,
³»¿ë¿¡ ÀÖ´Â ÆÄÀÏÀ̸§¿¡ ´ëÇÑ MD5 ¹®ÀÚ¿À» ¸¸µé¾î¼ ³»¿ë¿¡ ÀÖ´Â
MD5 ¿Í ³»¿ëÀÌ °°ÀºÁö¸¦ È®ÀÎÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¿ª½Ã °£´ÜÇÑ ÄÚµåÀÓÀ¸·Î
¼³¸íÀº ÁÖ¼®À¸·Î ´ë½ÅÇÑ´Ù.
¿¹Á¦ : checklist.cc
#include <openssl/md5.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <vector>
using namespace std;
#define LISTFMDNAME ".listmd5.cfg"
#define chop(str) str[strlen(str) - 1] = '\0'
typedef struct _filelist
{
char filename[80];
char md5[40];
} filelist;
int file2md5(char *, char *);
int main(int argc, char **argv)
{
int i;
FILE *fp;
struct stat status;
char *data;
filelist md5info;
vector<filelist> vmd5info;
char buf[80];
char md5msg[40];
vector<filelist>::iterator mi;
// ¸®½ºÆ®¸¦ Àоî¿Í¼ ÆÄÀÏ & md5 ¸Þ½ÃÁö ¸ñ·ÏÀ» ¸¸µç´Ù.
if ((fp = fopen(LISTFMDNAME, "r")) == NULL)
{
perror("error : ");
exit(0);
}
while(fgets(buf, 80, fp) != NULL)
{
char null[3];
chop(buf);
sscanf(buf, "%[^:=]%[:=]%s",
md5info.filename, null, md5info.md5);
vmd5info.push_back(md5info);
}
fclose(fp);
// ÆÄÀÏ º¯Á¶¸¦ °Ë»çÇÑ´Ù.
while(1)
{
int check = 1;
mi = vmd5info.begin();
while(mi != vmd5info.end())
{
printf("ÆÄÀϰ˻ç : %s, ", mi->filename);
if (file2md5(mi->filename, md5msg) < 0)
printf("WARN : ÆÄÀÏ»èÁ¦", --check);
else
if (strcmp(mi->md5, md5msg) != 0)
printf("WARN : ÆÄÀϺ¯Á¶ %s => %s", mi->md5, md5msg, --check);
*mi++;
if (check == 1)
printf("OK");
printf("\n");
}
printf("\n");
sleep(2);
}
}
int file2md5(char * file_name, char *md5msg)
{
char *data;
int fd;
int i;
struct stat status;
unsigned char digest[16];
char *x;
MD5_CTX lctx;
MD5_Init(&lctx);
fd = open(file_name, O_RDONLY);
if (fd < 0)
{
return -1;
}
fstat(fd, &status);
data = (char *)malloc(status.st_size);
read (fd, data, status.st_size);
MD5_Update(&lctx, data, status.st_size);
MD5_Final(digest, &lctx);
for (i = 0; i < sizeof(digest); ++i)
{
sprintf(md5msg+(i*2), "%02x", digest[i]);
}
free(data);
close(fd);
return 1;
}
|
¸ÕÀú Àû´çÇÏ°Ô list.cfg ¸¦ ¸¸µé°í ³ª¼ makelist ¸¦ ½ÇÇà½ÃŲ´Ù.
±×¸®°í ³ª¼ checklist ¸¦ ½ÇÇà½Ã۵µ·Ï ÇÑ´Ù.
[root@localhost md5]# ./makelist
[root@localhost md5]# ./checklist
ÆÄÀϰ˻ç : 1.txt, OK
ÆÄÀϰ˻ç : 2.txt, OK
ÆÄÀϰ˻ç : 3.txt, OK
ÆÄÀϰ˻ç : 4.txt, OK
ÆÄÀϰ˻ç : 5.txt, OK
...
|
ÀÌÁ¦ 1.txt ÆÄÀÏÀ» º¯°æÇϸé checklist ´Â 1.txt °¡ º¯Á¶µÇ¾ú´Ù´Â°É
¹ß°ßÇØ ³»°í WARN ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.
ÆÄÀϰ˻ç : 1.txt, WARN : ÆÄÀϺ¯Á¶ fb20e95d00a91f81936f84dc0fb3f770 => 7e8d5617272c76ad7ef16a113f50ed79
ÆÄÀϰ˻ç : 2.txt,
ÆÄÀϰ˻ç : 3.txt,
|
ÀÌ»ó °£´ÜÇÏ°Ô ÆÄÀϺ¯Á¶¸¦ °Ë»öÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸¾Ò´Ù. À§ÀÇ ³»¿ë¿¡
´ëÇØ¼ ÀÌÇØ¸¦ Çß´Ù¸é - ÀÌÇØÇÏ°í ¸»°Íµµ ¾ø´Â °£´ÜÇÑ ³»¿ëÀÌÁö¸¸ -
´Ù¾çÇÑ ¿ëµµ·ÎÀÇ ÀÀ¿ëÀÌ °¡´ÉÇÒ°ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ÀÀ¿ëÀº ¿©·¯ºÐÀÇ ¸òÀÌ µÉ°ÍÀÌ´Ù.
|
|