66
77#include < entropy/hex_display_feature.h>
88
9+ #include < iostream>
10+
911namespace entropy {
1012
1113class AEWFDetector : public HexDisplayFeature {
@@ -19,12 +21,32 @@ class AEWFDetector : public HexDisplayFeature {
1921
2022 std::vector<Highlight> getHighlights (const std::vector<uint8_t > §orData, size_t sectorIndex) const override {
2123 std::vector<Highlight> highlights;
22- // Scan for a AEWF signature at sector start (0-3)
23- // Signature: EVF 0x09 0x0d 0x0a 0xff 0x00
24- if (sectorData.size () >= 13 && sectorData[0 ] == 0x45 && sectorData[1 ] == 0x56 && sectorData[2 ] == 0x46 && sectorData[3 ] == 0x09 &&
25- sectorData[4 ] == 0x0d && sectorData[5 ] == 0x0a && sectorData[6 ] == 0xff && sectorData[7 ] == 0x00 ) {
26- for (size_t i = 0 ; i < 8 ; i++) {
27- highlights.push_back ({i, this ->color });
24+
25+ // .E01 file
26+ // Signature: EVF 0x09 0x0d 0x0a 0xff 0x00
27+ const char aewf_signature[] = {' E' , ' V' , ' F' , 0x09 , 0x0d , 0x0a , (char )0xff , 0x00 };
28+
29+ // check if sectorData contains the signature
30+ for (size_t i = 0 ; i + sizeof (aewf_signature) <= sectorData.size (); i++) {
31+ if (memcmp (§orData[i], aewf_signature, sizeof (aewf_signature)) == 0 ) {
32+ for (size_t j = 0 ; j < sizeof (aewf_signature); j++) {
33+ highlights.push_back ({i + j, this ->color });
34+ }
35+ return highlights;
36+ }
37+ }
38+
39+ // .AD1 file
40+ // Signature: ADSEGMENTEDFILE\0
41+ const char ad1_signature[] = {' A' , ' D' , ' S' , ' E' , ' G' , ' M' , ' E' , ' N' , ' T' , ' E' , ' D' , ' F' , ' I' , ' L' , ' E' , 0x00 };
42+
43+ for (size_t i = 0 ; i + sizeof (ad1_signature) <= sectorData.size (); i++) {
44+ if (memcmp (§orData[i], ad1_signature, sizeof (ad1_signature)) == 0 ) {
45+ // Found AD1 signature
46+ for (size_t j = 0 ; j < sizeof (ad1_signature); j++) {
47+ highlights.push_back ({i + j, this ->color });
48+ }
49+ return highlights;
2850 }
2951 }
3052
0 commit comments