Bu məqaləmizdə sizə FAT32 fayl sistemində silinə bilinməyən “Autorun” viruslarına qarşı mübarizə aparma metoduna bir nümunə haqqında məlumat verəcəyik. İlk öncə FAT32 haqqında qısaca məlumat verək. Açılışı “File Allocation Table” olan bu fayl sisteminin 3 növü mövcuddur: FAT12, FAT16 və FAT32. Aralarındaki əsas fərq FAT disk struktura girişlərin bit tipindən ölçüləridir. Sonda olan rəqəmlər məhz bu fərqi göstərən bit ölçüləridir. Bütün FAT fayl sistemləri əsas olaraq İBM PC arxitekturası üçün hazırlanmışdır. Bu səbəbdən dəstəklənən byte ordering little endiandır.
FAT fayl sistemi 4 esas bölmədən ibarətdir:
0. Region reserved
1. FAT Region
2. Root Directory Region(FAT32 dəstəkləmir)
4. File and Directory Region
Biz sizlərlə hal-hazırda geniş istifadə olunan FAT32 sistemində manual yol ilə istifadəyə nümunə bir metoddan bəhs edəciyik. İlk struktur yada başqa adla ilk region BPB(Bios parameter block) olaraq adlandırılan regiondur.
Gəlin bu struktura hex redaktoru vasitəsi ilə nəzər yetirək:
İlk sector 512 byte həcmindədir. Sonuncu 2 byte 0x55AA signatura hesab olunur. Lakin diqqət edilməsi gərəkən bir nüans var, əgər FAT strukturunda ki, BytesPerSector 512 olduğu göstərilibsə bu həmdə sektorun uzunluğunu ifadə edir. Biz bu strukturu oxumaq üçün Python proqramlaşdırma dilində kiçik bir script hazırlayıb, scriptin köməkliyi ilə disk haqqında gərəkli məlumatları əldə edə bilərik.
Test üçün keçək silinə bilinməyən faylın yaradılmasına. Hal hazırkı disk boşdur. İlk öncə diskdə Autorun.inf adında fayl yaradırıq.
Şəkildən göründüyü kimi faylımız hazırdır. İndi həmin bu faylı disk üzərində tapmaq lazımdır. Bunun üçün python scriptimizdən istifadə edə bilərik. İlk öncə kiçik bir hesablama aparmalıyıq. Microsoft tərəfindən hazırlanan texniki sənəddə aşağıdakı düsturlar verilib.
İlk öncə FirstDataSectoru tapmalıyıq.
if (BPB_FATSz16 != 0)
FATSz = BPB_FATSz16;
else
FATSz = BPB_FATSz32;
FirstDataSector = BPB_ResvdSecCnt + (BPB_NumFATs * FATSz) + RootDirSectors;
Python:
>>> from fat32info import FAT
>>> f = FAT("E")
>>> f.load()
>>> f.FATSz16
0
>>>
>>> FATSz = f.FATSz32
>>> FATSz
1925
Burda növbəti hesablama üçün bizə RootDirSectors lazımdır.
>>> rootdir = ((f.RootEntCnt * 32) + (f.BytsPerSec -1) // f.BytsPerSec)
>>> rootdir
0 #FAT32
>>> FirstDataSector = f.RsvdSecCnt + (f.NumFats * FATSz) + 0
>>> FirstDataSector
3888
Bundan sonra FirstSectorofClusterı tapmaq lazımdır.
Bunun üçün aşağıdakı düsturdan istifadə etməliyik.
Given any valid data cluster number N, the sector number of the first sector of that cluster (again relative to sector 0 of the FAT volume) is computed as follows:
FirstSectorofCluster = ((N – 2) * BPB_SecPerClus) + FirstDataSector;
>>> FirstSectorofCluster = ((f.RootClus -2) * f.SecPerClus) + FirstDataSector
>>> FirstSectorofCluster
3888
>>> FirstSectorofCluster * 512 BytesPerSector
1990656 #Faylımızın yerləşdiyi sector
Şəkildən göründüyü kimi faylımızın yerləşdiyi sektora gəldik. Rəsmi texniki sənəddə fayl strukturu bu şəkildə verilib.
C:
Python:
class DIR_Name(Structure):
_fields_ = [('Name',c_byte * 11),
('Attr',c_byte),
('NtRes',c_byte),
('CrtTimeTenth',c_byte),
('CrtTime',c_byte * 2),
('CrtDate',c_byte * 2),
('LstAccTime',c_byte * 2),
('FstClusHI',c_byte * 2),
('WrtTime',c_byte * 2),
('WrtDate',c_byte * 2),
('FstClusLo',c_byte * 2),
('FileSize',c_byte * 4)]
Size: 11 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 4 = 32
Offset 2(Attr) => File Attribute
Şəkildən göründüyü kimi artıq faylımızın atributunu da bilirik. Gəlin kiçik bir test keçirək və faylımızın attributunu dəyişək və 0x10(ATTR_DİRECTORY) edək.
Bu normal Attributlardır. Yəni istifadə etmək olar. Lakin bu bayt siyahıda olmayan bir bayt ilə əvəzləsək?!
Nəticə:
Test tapşırığının sonuna gəldik sonuna gəldik. Yuxarıda gördüyünüz metoddan istifadə edərək “Autorun” viruslarına qarşı mübarizə apara bilərsiniz. Yəni virus özünü diskə kopyalasa belə Autorun.inf faylına lazımı məlumatı yaza bilmədiyi üçün virus avtomatik işə düşə bilməyəcək və beləcə yoluxduğunuz “Autoran” virusunun işə düşməsini əngəlləmiş olacaqsınız.
Microsoft şirkətinin rəsmi texniki sənədini aşağıdakı keçiddən əldə edə bilərsiniz:
download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc
© 2011-2024 Bütün Hüquqlar Qorunur