Skip to content

Commit a3e3c53

Browse files
committed
Added injecting to bmp.
1 parent a857d0c commit a3e3c53

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

bmp.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ char *bmp_js_v(char *content, int size){
3838
return buffer;
3939
}
4040

41+
char *bmp_js_i(char *content, int csize, char *image, int isize){
42+
const char _bmp_header[7] = {0x42, 0x4d, 0x3d, 0x30, 0x3b, 0x2f, 0x2a};
43+
const char _bmp_header_end[BMP_JS_HEADER_I] = {0x2a, 0x2f, 0x3b};
44+
char *buffer = (char*)malloc(csize + isize + BMP_JS_HEADER_I);
45+
memcpy(buffer, _bmp_header, 7);
46+
memcpy(&buffer[7], &image[7], isize - 7);
47+
memcpy(&buffer[isize], _bmp_header_end, BMP_JS_HEADER_I);
48+
memcpy(&buffer[isize + BMP_JS_HEADER_I], content, csize);
49+
return buffer;
50+
}
51+
4152
char *bmp_filename(char *fn, int size){
4253
const char _bmp_ending[BMP_ENDING] = {0x2e, 0x62, 0x6d, 0x70, 0x00};
4354
char *newfile = (char*)malloc(size + BMP_ENDING);

bmp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ License: GNU GENERAL PUBLIC LICENSE Version 3
1515

1616
#define BMP_JS_HEADER 139
1717
#define BMP_JS_HEADER_V 134
18+
#define BMP_JS_HEADER_I 3
1819
#define BMP_ENDING 5
1920

2021
char *bmp_js(char*, int);
2122
char *bmp_js_v(char*, int);
23+
char *bmp_js_i(char*, int, char*, int);
2224
char *bmp_filename(char*, int);
2325

2426
#endif

main.c

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,39 @@ int main(int argc, char *argv[]){
7171
char *outbuf;
7272
if(strcmp(argv[1], "bmp") == 0){
7373
if(argc > 3){
74-
if(strcmp(argv[3], "-l") == 0){
75-
outbuf = bmp_js_v(buf, filesize);
76-
out = fopen(bmp_filename(argv[2], getlen(argv[2])), "wb");
77-
for(int i = 0; i < filesize + BMP_JS_HEADER_V; i++){
78-
fprintf(out, "%c", outbuf[i]);
74+
if(argc > 4){
75+
FILE *im = fopen(argv[4], "rb");
76+
if(im){
77+
fseek(im, 0, SEEK_END);
78+
int imsize = ftell(im);
79+
rewind(im);
80+
char *imbuf = (char*)malloc(imsize * sizeof(char));
81+
fread(imbuf, 1, imsize, im);
82+
fclose(im);
83+
outbuf = bmp_js_i(buf, filesize, imbuf, imsize);
84+
out = fopen(bmp_filename(argv[2], getlen(argv[2])), "wb");
85+
for(int i = 0; i < (filesize + imsize + BMP_JS_HEADER_I); i++){
86+
fprintf(out, "%c", outbuf[i]);
87+
}
88+
free(imbuf);
89+
}else{
90+
_help(argv[4], 3);
91+
return 2;
7992
}
93+
}else if(strcmp(argv[3] , "-i") == 0){
94+
_help(argv[3], 2);
95+
return 2;
8096
}else{
81-
_help(argv[3], 1);
82-
return 3;
97+
if(strcmp(argv[3], "-l") == 0){
98+
outbuf = bmp_js_v(buf, filesize);
99+
out = fopen(bmp_filename(argv[2], getlen(argv[2])), "wb");
100+
for(int i = 0; i < filesize + BMP_JS_HEADER_V; i++){
101+
fprintf(out, "%c", outbuf[i]);
102+
}
103+
}else{
104+
_help(argv[3], 1);
105+
return 3;
106+
}
83107
}
84108
}else{
85109
outbuf = bmp_js(buf, filesize);

0 commit comments

Comments
 (0)