إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

سؤال بخصوص الملفات

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • #16
    السلام عليكم اخ ايهاب مشكور جدا على تعاونك يا غالي
    اخ ايهاب لو قسمنا مثلا القسم الاول من سكربت يأخذ القيم من مجلد موجود على المكان التالي
    /home/GNU
    اسم الملف هو مثلا md5checks
    موضوع فيه اكثر من 200 ملف منوعات الامتدادات
    هل يمكن ان نجعل الجزء الاول يقوم بقرأة الملفات الموجود في المجلد md5checks كامله لأنه من صعب انه نعمل 200 ملف بشكل يدوي هذا في الجزء الاول

    الجزء الثاني :
    نجعل القيم التالي يتم قرأتها من ملف md5checks تخزن في ملف اسمه out ليحفظ القيم md5 بها التي حسبناها اي يعني 200 ملف السابقات
    ونجعل التخزين يكون على الشكل التالي
    d9e6b6f65c65dc0c0c420443066e941f gnu.sh
    d9e6b6f65c65dc0c04204430666e941f gnu2.sh
    d9e6b6f65c6420443066e941fooyyggg gnu1.sh
    d9e6b642044306dc0c0c4204430i941f gnu3.sh
    اي الهاش + اسم الملف

    اما بالنسبة للجزء الثالث
    جزئية البحث داخل الجهاز
    اي يقوم السكربت بعمل هل بحث هل القيمة md5 الموجوده داخل ملف out متطابقه مع اي ملف داخل الجهاز طبعا يبحث من خلال القائمة الموجوده داخل ملف out ويقوم بمقارنتها مع الملف الموجود داخل الجهاز

    الجزئية الاخيره من السكربت

    هو ان يقوم بنقل الملف المتطابق مع md5 الموجود داخل ملف out الى المسار التالي داخل الجهاز
    /root/ppppp

    هذا ما اردت السكربت ان يقوم به
    واشكر الاخ ايهاب على مساعدته لي وانتظر البقية للمساعده وشكرا لكم
    اعذروني لجلي البرمجي في باتش شل وشكرا لكم








    هذا بالنسبة للجزء الاول

    تعليق


    • #17
      الاسكريبت سيكون بطئ جدا وسيأخذ وقت طويل للتنفيذ فلماذا تحاتجه؟
      إذا كان أمرا ضروريا سنحاول مساعدتك إن شاء الله أما إذا لم يكن ضرورى فأعتقد انه لا داعى لإضاعة وقت فى كتابة اسكريبت بلا غرض مجدى
      آسف وأرجو أن تفهم مقصدى

      هذا بالنسبة للجزء الاول
      أفهم من ذلك أنه هناك أجزاء أخرى؟

      عموما إشرح فائدة الاسكريبت من فضلك

      تعليق


      • #18
        شكرا اخي ايهاب وارجوا ان لا اكون قد ازعجتك بطلي اعتذر لك
        ارجوا ان تستغل وقتك في امر يكون بالنفع والفائده لك وتتحفنا به هنا في المجتمع
        السكربت انا محتاجه في امر ما موكل لي بكتابته
        وهو موجوده بشكل نظري كامل في المشاركه رقم 16
        اما بالنسبة لهذه الجمله في الاخير
        فقد كتبت بالخطأ
        هذا بالنسبة للجزء الاول
        وشكرا لمساعدتك وجزاك الله كل خير

        تعليق


        • #19
          السلام عليكم ورحمه الله وبركاته

          اخى الكريم اعتذر لتأخرى وذلك لانى كنت مسافر

          لقد كتبت هذا البرنامج من فتره والغرض منه كان وجود الكثير من الفيروسات التى اكتشفتها
          ولم يستطع برنامج الانتى فيروس الخاص بالشركه ان يكتشفها فكنت اقوم بأخذ ال md5 للفيروسات
          ثم عمل سيرش بهذا البرنامج لمطابقه ال md5 لجميع ملفات اجهزه الشركه واذا وجد فانه يكون فيروس

          وقد قمت بعمل بعض التعديلات على البرنامج الاصلى لكى يلائم ما طلبته على حسب فهمى

          اولا :
          يقوم البرنامج بالبحث فى مجلد باسم md5checkss لا تنسى ان هناك حرفين s وهذا الملف لابد ان يتواجد فى نفس مسار البرنامج هذا المجلد يحتوى على عده ملفات بامتداد .md5 دوت ام دى فايف
          وهذه الملفات هى ملفات نصيه وتحتوى بداخلها على ال md5 المراد البحث عنه كالتالى

          ملف x.md5
          كود:
          [LEFT] a044a2a0c8103fc3e5b7e18b0f7de1c8
          1c6f1c48c560432893fd0cc8a2d579b0
          w015b9134dad7e29e7d2d6b5f5c8c2fc
          [/LEFT]
          ملف z.md5
          كود:
          [LEFT] c9e6b6f65c65dc0c0c420443066e941f
          d8e6b6f65c65dc0c04204430666e941f
          m7e6b6f65c6420443066e941fooyyggg
          h5e6b642044306dc0c0c4204430i941f
          [/LEFT]
          يقوم البرنامج بدمج اى ملفات بامتداد md5 مثل الملفين السابقين وانشاء ملف جديد فى مسار البرنامج تحت اسم final_md5.md5 وبهذا نكون قد قمنا بتجميع كل ملفات ال md5 ويقوم البرنامج بتحميل هذا الملف فى الذاكره ولذلك ينصح اذا كانت حجم ال md5 كبير ان تجد طريقه اخرى غير طريقتى لانها ستقوم بحجز مساحه كبيره من الذاكره

          ثانيا :
          يسأل البرنامج المستخدم عن المسار الذى يريد البحث فيه عن الفيروسات او الملفات وهى عمليه يتوقف وقتها على سرعه المعالج والذاكره وايضا كم المسارات فى المجلد وعدد الملفات به وايضا لابد ان تأخذ فى الاعتبار انه لابد من تشغيل البرنامج بصلاحيات الروت اذا اردت البحث فى مجلدات عليها صلاحيات

          ثالثا :
          يقوم البرنامج بمطابقه ال md5 لجميع الملفات التى وجدت بال md5 المخزنه بالذاكره واذا وجد تطابق فانه يقوم بطباعه عدد الملفات التى وجدت وايضا يقوم بطباعه مسارها

          اليك البرنامج
          test.py
          كود:
          [LEFT]# -*- coding: utf-8 -*-
          
          import sys, os, hashlib
          
          def md5_for_file(f, block_size=2**20):
              m=open(f)
              counter=0
              md5 = hashlib.md5()
              while True:
                  counter+=1
                  data = m.read(block_size)
                  if not data:
                      break
                  md5.update(data)
              return (md5.hexdigest(),str(counter))
          
          def generate_md5_main(xpath):
              current_dir=xpath
              open_write_file=open(current_dir+os.sep+'final_md5.md5', 'w')
              xpath=unicode(xpath+os.sep+'md5checkss')
              file_dir=loop_for_files(xpath)
              if file_dir != 'error' and len(file_dir)>0:
                  for md5_file in file_dir:
                      if md5_file.endswith(".md5"):
                          open_file=open(md5_file, 'r')
                          reading_it=open_file.read()
                          open_file.close()
                          open_write_file.write(reading_it)
                          
              open_write_file.close()
              print 'collecting all md5 in one file -----> complete'
            
          def loop_for_files(xpath):
              if os.path.isdir(xpath):
                  from_file_allpath=[] 
                  for root, dirs, files in os.walk(xpath): 
                      for name in files: 
                          fname = os.path.join(root, name) 
                          from_file_allpath.append(fname)
                  return from_file_allpath
              else:
                  print 'the path you enterd not exist'
                  return'error'
              
          def main():
              xpath = os.getcwd() # the program root directory
              generate_md5_main(xpath) #generate "final_md5.md5" in the programe root
              open_file=open(xpath+os.sep+'final_md5.md5', 'r')
              reading_it=open_file.read()
              open_file.close()
              all_md5_dic=[]
              matched_files=[]
              
              for md5_line in reading_it.split('\n'):#reding all md5 from the generated file to memory
                  ##warnning if the generated file is too big it will eat your memory
                  md5_line=md5_line.strip()
                  if md5_line!='':
                      all_md5_dic.append(md5_line)
              
              print 'reading data to memory -----> complete'
              
              #ask the user for the place where to start searching for files
              print 50*'*'
              print "plz take care if u want to search in places with administrator permession you need to run the script as root"
              print "enter the path to search for matched file like '/home/x'"
              print 50*'*'+'\n'
              
              file_search_start=raw_input("enter the path : ")
          
              print '\n\tplease wait this may take some time depending on your cpu...'
              
              file_search_start=file_search_start.strip()
              file_dir=loop_for_files(file_search_start)#list all the fiels found
              
              print 'searching for all the files in the selected path -----> complete'
              print 'start to comparison this may take some time .....'
              
              if file_dir != 'error' and len(file_dir)>0:
                  for found_file in file_dir:
                      chek_md5=md5_for_file(found_file)#check the md5 of the file
                      if str(chek_md5[0]) in str(all_md5_dic):#check if the md5 is in our memory database
                          matched_files.append(found_file)
              
              print 'comparison processing -----> complete'
              
              if len(matched_files)>0:
                  print '\nwe found '+str(len(matched_files))+' matched files\n'+50*'-'
                  for F_Matche in matched_files:
                      print F_Matche#********you can do what ever you want here copy the file or move it*********
                  print 50*'-'
              else:
                  print 'we didnt found any match'
              
              
          if __name__ == '__main__':
              main()
          [/LEFT]
          تحذير لا تنسى انشاء مجلد باسم md5checkss بجانب ملف البرنامج وايضا لا تنسى الصلاحيات

          ارجو ان يكون هذا هو الكود الذى تبحث عنه

          اذا كان هناك اى استفسار لا تتردد فى السؤال


          ارجو منك الدعاء لى ولوالدى

          No Pains No Gains



          تعليق


          • #20
            آسف على التأخر قرأت الموضوع الآن فقط.
            السكربت كالتالي:
            كود:
            #!/bin/bash
            
            FOLDER="/home/GNU/md5checks"
            SEARCH="/home/GNUFILES"
            DEPLACE="/root/ppppp"
            
            echo -en "" > $FOLDER"/out.txt"
            find $FOLDER -type f | while read file; do md5sum "$file" 1>>$FOLDER"/out.txt"; done
            find $SEARCH -type f > files.txt
            while read file; do 
                if [ $(egrep -c $(md5sum "$file" | awk '{print $1}') "$FOLDER/out.txt") -gt "0" ]; then
                    mv "$file" $DEPLACE
                fi
            done <files.txt
            كانت قد جاءتني فكرة كهذه في وقت سابق للبحث عن ملفات ضارة لكن لم أنفذها لأسباب طرحها الأخ إيهاب الجداوي.

            ملاحظة: لم أجرب السكربت، كتبته الآن وبسرعة والتجريب على مسؤوليتك

            تحياتي.

            تعديل: السكربت عند تفيذه لا يُظهر أي رسالة (يعمل صامتا) لهذا يمكنك التعديل عليه لكي يُظهر بع الرسائل على حسب رغبتك لكي لا تشعر بالملل أثناء تنفيذه.
            والمرء ساع لأمر ليس يدركه .. والعيش شح وإشفاق وتأميل
            مدونتي
            http://www.silencker.com

            تعليق


            • #21
              الاخ 0 بلاك و الاخ سيلنت هاكر
              شكرا لكم جزيل الشكر والعرفان
              وسأقوم بالتجربة حاليا
              وسأرد لكم خبر بأذن لله بعد التجربه

              تعليق


              • #22
                الاخ SilenCker اشكرك جدا واحيك على تعبك وايضا لا انسى الاخرين شكار لكم
                تم تنفيذ السكربت ونجح والحمدلله فقط اريد تغيرات طفيفه وتصليح خطأ صغير

                الملفات التي ينقلها السكربت الى المجلد التالي
                /root/ppppp
                تكون لا يمكن قرائتها اي تظهر رموز وعبارات غير مفهمومه
                ------------------

                الأن التعديل الذي اريد ان اعمله على السكربت هو كالتالي
                حاليا انا على المسار التالي
                pwd
                root/gnu/files
                هذا المسار root/gnu/files
                يوجد به الملفات التي اريد ان يقوم بقرأة md5 لها
                كما قلنا 200 ملف على الاقل
                فقط اريد جمله لوب لها اي لا اريد وضعها داخل السكربت هذه الجمله
                لا دخل لها بسكربت تقوم بعمل قرأت الملفات وتوليد md5 لها وحفظ الملف في المسار التالي
                root/out.txt
                طبعا طريقة التخزين تكون كالتالي

                كود:
                d9e6b6f65c65dc0c0c420443066e941f gnu.sh
                d9e6b6f65c65dc0c04204430666e941f gnu2.sh
                d9e6b6f65c6420443066e941fooyyggg gnu1.sh
                d9e6b642044306dc0c0c4204430i941f gnu3.sh
                اي الهاش + اسم الملف
                اعتقد يمكن تحويل هذه الجمله الى امر ندخله في تيرمنال ويعمل المطلوب في الاعلى
                find root/gnu/files -type f | while read file; do md5sum "$file" 1>>root/out.txt"; done echo " finished "
                ------------------------------------------------
                الجزء الثاني
                هو يقوم بتأكد هل مجلد الذي سيقوم بنقل اليه موجود ام لا
                كود:
                if [ "`/root | egrep "scan"]
                	then
                		echo " yes found"
                		exit
                	else
                		echo " not found ";
                	then
                		mkdir /root/scan
                ----------------

                بعدها تحويل الجمله الثانية الى
                mv "$file" $DEPLACE && chmod 600 all file transfer DEPLACE /root/scan
                اي اضافة تصريح 600 الى الملفات

                كود:
                #!/bin/bash
                
                #place search
                SEARCH="/home/"
                # Transfer files with the same MD5
                DEPLACE="/root/scan"
                # Values md5 stored
                SEARCHMD5="/root/out"
                
                
                if [ "`root | egrep -c "scan"]
                	then
                		echo " yes found"
                		exit
                	else
                		echo " not found ";
                	then
                		mkdir /root/scan
                fi
                
                echo -en "" > $FOLDER"/out.txt"
                
                find $SEARCH -type f > files.txt
                while read file; do 
                    if [ $(egrep -c $(md5sum "$file" | awk '{print $1}') "$FOLDER/out.txt") -gt "0" ]; then
                        mv "$file" $DEPLACE && chmod 600 all file transfer  /root/scan
                    fi
                done <files.txt
                فقط هذه التغيرات ويكون ان شاء الله السكربت جاهز من جميعه السكربت فقط يكون معه ملف out.txt و السكربت نفسه md5.sh
                ولا حاجة لكل مره انه يقرأ md5 للمجلد الذي يوجد به 200 ملف

                واشكرك جزيل الشكر

                تعليق


                • #23
                  السلام عليكم
                  ارجوا اضافة سطر التنبيه البريدي في حال نقل اي ملف
                  if [ "$email_*****" == "1" ]; then
                  انتظركم

                  تعليق


                  • #24
                    السلام عليكم ورحمة الله

                    آسف جدا على التأخر، نعم يمكنك فصل عملية إنشاء الملف ويمنك انشاءها يدويا عبر :
                    كود:
                    find /root/gnu/files -type f | while read file; do md5sum "$file" 1>>/root/out.txt; done
                    وبالتعديلات التي طلبتها يصبح السكربت كالتالي:

                    كود:
                    #!/bin/bash
                    
                    SEARCH="/home/"
                    DEPLACE="/root/scan"
                    cd $HOME
                    
                    [ ! -d $DEPLACE ] && mkdir $DEPLACE
                    find $SEARCH -type f > files.txt
                    while read file; do 
                        if [ $(egrep -c $(md5sum "$file" | awk '{print $1}') "/root/out.txt") -gt "0" ]; then
                            mv "$file" $DEPLACE
                        fi
                    done <files.txt
                    
                    [ $(ls -lut | awk '{print $6}' | egrep -c $(date '+%Y-%m-%d')) -gt "0" ] && echo "New files" | mail -s "new files in $SEARCH" [email protected]
                    ملاحظة: لم أجربه، جربه على مسؤوليتك

                    تحياتي.
                    والمرء ساع لأمر ليس يدركه .. والعيش شح وإشفاق وتأميل
                    مدونتي
                    http://www.silencker.com

                    تعليق


                    • #25
                      شكرا اخوي سيلنت ما شاء الله عليك ربي يحرسك من كل مكروه
                      جاري التجربة وان شاء الله يكون كل شيء خير يا رب
                      اعذرني واسف على الغلبه
                      تحياتي لك

                      تعليق

                      يعمل...
                      X