接触 linux c 时间不长, 多的不说了,好多大神写的都好的很,在这里就淡淡的记录一下,直接上代码:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/inotify.h>
#include "inite.h"
extern int StartProgram(const char *program);
int MonitorFolder(const char *dir)
{
int init_fd = 0;
int watch_fd = 0;
init_fd = inotify_init();
if ( init_fd < 0 ) {
perror( "inotify_init() Error! \n" );
}
watch_fd = inotify_add_watch( init_fd , dir, IN_CREATE );
while (1) {
int length=0;
int i = 0;
char buffer[BUF_LEN];
length = read( init_fd , buffer, BUF_LEN );
if ( length < 0 ) {
perror( "read ....." );
}
while ( i < length ) {
struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ];
if ( event->len ) {
if ( event->mask & IN_CREATE ) {
if ( event->mask & IN_ISDIR ) {
//printf( "The directory %s was created.\n", event->name);
}else {
if(strstr(event->name,STOP_SYSTEM)){
StartProgram("ls -l / > lsl.log");
}
else if(strstr(event->name,STOP_SLSYSTEM)){
StartProgram("ps -aux > ps.log");
}
else if(strstr(event->name,STOP_JACKHISYSTEM)){
StartProgram("ps -e > pse.log");
}
else if(strstr(event->name,START_IMPLANT)){
StartProgram("date > date.log");
}
else if(strstr(event->name,STOP_IMPLANT)){
StartProgram("tar -cf tmp.tar ./*");
}
else if(strstr(event->name,RESTART_IMPLANT)){
StartProgram("ftp 192.168.1.122 > ll.log");
}
}
}
}
i = EVENT_SIZE event->len;
// sleep(1);
}
}
( void ) inotify_rm_watch( init_fd, watch_fd );
( void ) close( init_fd );
return 0;
}
int main(int argc, char **argv) {
if (argc != 2) {
printf("Usage: %s <file/dir>\n", argv[0]);
return -1;
}
strcpy(Directory,argv[1]);
MonitorFolder(Directory);
return 0;
}
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <string.h>
#include <pthread.h>
#include <ctype.h>
pthread_mutex_t mut;
pthread_t thread[2];
char dir[100]={0};
void *Execl_Sh(void *);
void *Execl_Sh(void *tmp)
{
if(system(dir) < 0)
return
}
void thread_create()
{
int temp = 0;
memset(&thread,0,sizeof(thread));
if(temp=pthread_create(&thread[0],NULL,Execl_Sh,NULL)!=0)
printf("create Execl_Sh failed!\n");
else
printf("create Execl_Sh successed!\n");
}
int StartProgram(const char *program)
{
strcpy(dir,program);
thread_create();
pthread_join(thread[0],NULL);
return 0;
}
浙公网安备 33010602011771号