Hi List, just put something together to aid me in generating signatures for my database. Perhaps someone likes it. Just use your favorit hex editor (vim :%!xxd) and get a good offset value.
./siggen virus.exe 0FF337 you get a 300 character signature which you (probably) have to cut a bit and give it an appropriate name. Greetings Daniel -- Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders --ToxicSin <siggen.c> /********************************************************************* * Copyright (C) 2004 Daniel Lord * * * * This is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published * * by the Free Software Foundation; either version 2 of the License, * * or (at your option) any later version. * * * * This software is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this software; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * * MA 02111-1307, USA. * *********************************************************************/ /* gcc -Wall -Os -s -lm -o siggen siggen.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <math.h> FILE * fopenfile_ro (char *file) { FILE *fdp; if ((fdp = fopen(file, "rb")) == NULL){ perror("fopen"); exit (EXIT_FAILURE); } return fdp; } int main (int argc, char *argv[]) { FILE *virfd; short i,x; long offset; long filesize=0; if (argc != 3) { fprintf(stderr, " usage: %s <file> <offset>\n", argv[0]); return EXIT_FAILURE; } virfd = fopenfile_ro(argv[1]); x=0; offset=0; for (i=strlen(argv[2])-1; i>=0; i--) { if ((toupper(argv[2][i]) >= 'A') && (toupper(argv[2][i]) <= 'F')){ offset += (toupper(argv[2][i])-0x37)*(pow(16,x)); x++; } else { if ((toupper(argv[2][i]) >= '0') && (toupper(argv[2][i]) <= '9')){ offset += (argv[2][i]-0x30)*(pow(16,x)); x++; } else { fprintf(stderr, " Wrong Offset Value\n"); fprintf(stderr, " String: %s -- Value: %c\n", argv[2],argv[2][i]); fclose(virfd); return EXIT_FAILURE; } } if (x > 6) { fprintf(stderr, " Really big Offset? (FIXME)\n"); fclose(virfd); return EXIT_FAILURE; } } if (fseek(virfd, 0, SEEK_END) != 0){ perror("fseek"); fclose(virfd); return EXIT_FAILURE; } if ((filesize = ftell (virfd)) == -1) { perror("ftell"); fclose(virfd); return EXIT_FAILURE; } if ((offset+300) > filesize) { fprintf(stderr, " File too short or offset to big\n"); fprintf(stderr, " Filesize: %li -- Offset: %li + 300\n", filesize, offset); fclose(virfd); return EXIT_FAILURE; } if ((fseek (virfd, offset, SEEK_SET)) != 0) { perror("fseek"); fclose(virfd); return EXIT_FAILURE; } printf("unknown.auto.lo (Clam)="); for (i=0; i<300; i++) { x = fgetc(virfd); printf("%02X",x); } printf("\n"); fclose(virfd); return EXIT_SUCCESS; } </siggen.c> ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ Clamav-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/clamav-users