added english source and (old) german exe
This commit is contained in:
parent
16f63f0a4e
commit
d0e3b07ce2
112
manipulate_hosts.c
Executable file
112
manipulate_hosts.c
Executable file
@ -0,0 +1,112 @@
|
||||
/*
|
||||
* manipulate_hosts.c
|
||||
*
|
||||
* author: Patrick Neumann
|
||||
* version: 1.0 (02.11.2010)
|
||||
*
|
||||
* compile under (with):
|
||||
* - linux (http://gcc.gnu.org/)
|
||||
* - windows (http://www.mingw.org/)
|
||||
* - mac os x (work-in-progress)
|
||||
*
|
||||
* quick start guide:
|
||||
* 1. ping "www.microsoft.com" before
|
||||
* 2. run program
|
||||
* 3. ping "www.microsoft.com" afterwards
|
||||
* 4. compare outputs
|
||||
* 5. execute the program again
|
||||
* 6. now everything should be the same as before
|
||||
*
|
||||
* HINT: is not working on windows anymore because
|
||||
* the anti virus tools from today detect that kind of modification!
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h> // needed for the functions "strcpy", "strcat" und "strstr"
|
||||
#define LINELENGTH 80
|
||||
#ifdef __unix__
|
||||
#include <unistd.h> // needed for the function "access"
|
||||
#define WRITE W_OK
|
||||
#else
|
||||
#include <io.h> // needed for the function "access"
|
||||
#define WRITE 02
|
||||
#endif
|
||||
|
||||
int main(void) {
|
||||
#ifdef __unix__
|
||||
char oldfile[50] = "/etc/";
|
||||
#else
|
||||
char oldfile[50] = "C:\\WINDOWS\\system32\\drivers\\etc\\";
|
||||
#endif
|
||||
char newfile[50];
|
||||
strcpy( newfile, oldfile );
|
||||
strcat( oldfile, "hosts" );
|
||||
strcat( newfile, "newhosts" );
|
||||
char newline[50] = "149.20.20.133 www.microsoft.com";
|
||||
FILE *quelle, *ziel;
|
||||
char puffer[ LINELENGTH ];
|
||||
int counter = 0;
|
||||
|
||||
// check if the source could be opened and be written (for the later "delete before rename")
|
||||
if( access( oldfile, WRITE ) == -1 ) {
|
||||
fprintf( stderr, "Will not be able to delete %s later.\n", oldfile );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// open source
|
||||
if( ( quelle=fopen( oldfile, "r" ) ) == NULL ) {
|
||||
fprintf( stderr, "Can not open %s.\n", oldfile );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// open target
|
||||
if( ( ziel=fopen( newfile, "w" ) ) == NULL ) {
|
||||
fprintf( stderr, "Can not open %s.\n", newfile );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
while( fgets( puffer, LINELENGTH, quelle ) ) {
|
||||
// if text is not found, then ...
|
||||
if( strstr( puffer, newline ) == 0 ) {
|
||||
fputs( puffer, ziel );
|
||||
}
|
||||
// if text is found, then ...
|
||||
else {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
// if counter unchanged, then ...
|
||||
if( counter == 0 ) {
|
||||
fputs( newline, ziel );
|
||||
fputs( "\n", ziel );
|
||||
printf( "The line \"%s\" was added to %s.\n", newline, oldfile );
|
||||
}
|
||||
else {
|
||||
printf( "The line \"%s\" has been removed from %s.\n", newline, oldfile );
|
||||
}
|
||||
|
||||
// close both files before deleting / renaming
|
||||
fclose(quelle);
|
||||
fclose(ziel);
|
||||
|
||||
// delete original
|
||||
if( ( remove( oldfile ) ) == -1 ) {
|
||||
fprintf( stderr, "Error while deleting %s.\n", oldfile );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// rename manupulated copy to original
|
||||
if( ( rename( newfile, oldfile ) ) == -1 ) {
|
||||
fprintf( stderr, "Error while renaming %s.\n", newfile );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// so that the console esp. under windows does not disappear with "speed of light" again ...
|
||||
printf( "EXIT WITH RETURN..." );
|
||||
getchar();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
BIN
manipulate_hosts.exe
Executable file
BIN
manipulate_hosts.exe
Executable file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user