Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
gdut-drcom
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
gdut-drcom
Commits
32f54f23
Commit
32f54f23
authored
Oct 05, 2016
by
chenhaowen01
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add support of windows(mingw)
parent
450b69fc
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
58 deletions
+74
-58
src/Makefile
src/Makefile
+4
-0
src/auth.c
src/auth.c
+70
-58
No files found.
src/Makefile
View file @
32f54f23
...
@@ -19,6 +19,10 @@ else
...
@@ -19,6 +19,10 @@ else
objects
+=
md5.o md4.o sha1.o
objects
+=
md5.o md4.o sha1.o
endif
endif
ifeq
($(LANG),)
LIBS
+=
-lws2_32
endif
gdut-drcom
:
$(objects)
gdut-drcom
:
$(objects)
$(CC)
*
.o
-o
gdut-drcom
$(CFLAGS)
$(LIBS)
$(CC)
*
.o
-o
gdut-drcom
$(CFLAGS)
$(LIBS)
...
...
src/auth.c
View file @
32f54f23
...
@@ -2,29 +2,15 @@
...
@@ -2,29 +2,15 @@
#include <string.h>
#include <string.h>
#include <unistd.h>
#include <unistd.h>
#include <time.h>
#include <time.h>
#include <sys/socket.h>
#ifdef WIN32
#include <netinet/in.h>
#include <winsock2.h>
#include <arpa/inet.h>
//#define SOCKET int
#else
/*
#include <sys/socket.h>
#ifdef _WITH_OPENSSL_
#include <netinet/in.h>
#include <openssl/md5.h>
#include <arpa/inet.h>
#include <openssl/md4.h>
#define SOCKET int
#include <openssl/sha.h>
#define _MD5 MD5
#define _MD4 MD4
#define _SHA1 SHA1
#else
#include <polarssl/md5.h>
#include <polarssl/md4.h>
#include <polarssl/sha1.h>
#define _MD5 md5
#define _MD4 md4
#define _SHA1 sha1
#endif
#endif
*/
#ifdef __WITH_POLARSSL__
#ifdef __WITH_POLARSSL__
#include <polarssl/md5.h>
#include <polarssl/md5.h>
...
@@ -73,12 +59,21 @@ static void gen_ka1_checksum(char *checksum, char *seed, unsigned char mode);
...
@@ -73,12 +59,21 @@ static void gen_ka1_checksum(char *checksum, char *seed, unsigned char mode);
static
void
gen_ka2_checksum
(
char
*
data
,
int
len
,
char
*
checksum
);
static
void
gen_ka2_checksum
(
char
*
data
,
int
len
,
char
*
checksum
);
static
int32_t
drcomCRC32
(
char
*
data
,
int
len
);
static
int32_t
drcomCRC32
(
char
*
data
,
int
len
);
static
void
print_as_hex
(
char
*
buf
,
int
len
);
static
void
print_as_hex
(
unsigned
char
*
buf
,
int
len
);
/****local functions****/
/****local functions****/
int
auth
(
void
)
int
auth
(
void
)
{
{
#ifdef WIN32
WORD
sockVersion
=
MAKEWORD
(
2
,
2
);
WSADATA
wsaData
;
if
(
WSAStartup
(
sockVersion
,
&
wsaData
)
!=
0
)
{
return
0
;
}
#endif
/*variavles of packets*/
/*variavles of packets*/
unsigned
char
pkt_data
[
1024
]
=
{
0
};
//packet data buf
unsigned
char
pkt_data
[
1024
]
=
{
0
};
//packet data buf
int
length
;
//packet data length
int
length
;
//packet data length
...
@@ -94,38 +89,50 @@ int auth(void)
...
@@ -94,38 +89,50 @@ int auth(void)
unsigned
char
kp2_cnt
=
0x01
;
unsigned
char
kp2_cnt
=
0x01
;
unsigned
char
ka2_key
[
4
]
=
{
0
};
unsigned
char
ka2_key
[
4
]
=
{
0
};
unsigned
char
ka2_flag
[
2
]
=
{
0
};
unsigned
char
ka2_flag
[
2
]
=
{
0
};
unsigned
char
rand
[
2
]
=
{
0
};
unsigned
char
rand
_num
[
2
]
=
{
0
};
/*variables used in keep alive2 paket*/
/*variables used in keep alive2 paket*/
struct
sockaddr_in
remote_addr
;
struct
sockaddr_in
remote_addr
;
struct
sockaddr_in
local_addr
;
struct
sockaddr_in
local_addr
;
int
retry_cnt
;
int
retry_cnt
;
memset
(
&
remote_addr
,
0
,
sizeof
(
remote_addr
));
memset
(
&
remote_addr
,
0
,
sizeof
(
remote_addr
));
remote_addr
.
sin_family
=
AF_INET
;
remote_addr
.
sin_family
=
AF_INET
;
remote_addr
.
sin_addr
.
s_addr
=
inet_addr
(
drcom_config
.
remote_ip
);
#ifdef WIN32
remote_addr
.
sin_port
=
htons
(
drcom_config
.
remote_port
);
remote_addr
.
sin_addr
.
S_un
.
S_addr
=
inet_addr
(
drcom_config
.
remote_ip
);
#else
remote_addr
.
sin_addr
.
s_addr
=
inet_addr
(
drcom_config
.
remote_ip
);
#endif
remote_addr
.
sin_port
=
htons
(
drcom_config
.
remote_port
);
memset
(
&
local_addr
,
0
,
sizeof
(
local_addr
));
memset
(
&
local_addr
,
0
,
sizeof
(
local_addr
));
local_addr
.
sin_family
=
AF_INET
;
local_addr
.
sin_family
=
AF_INET
;
local_addr
.
sin_addr
.
s_addr
=
inet_addr
(
"0.0.0.0"
);
#ifdef WIN32
local_addr
.
sin_port
=
htons
(
drcom_config
.
remote_port
);
local_addr
.
sin_addr
.
S_un
.
S_addr
=
inet_addr
(
"0.0.0.0"
);
#else
local_addr
.
sin_addr
.
s_addr
=
inet_addr
(
"0.0.0.0"
);
#endif
local_addr
.
sin_port
=
htons
(
drcom_config
.
remote_port
);
int
client_sockfd
;
SOCKET
client_sockfd
;
if
((
client_sockfd
=
socket
(
AF_INET
,
SOCK_DGRAM
,
0
))
<
0
)
if
((
client_sockfd
=
socket
(
AF_INET
,
SOCK_DGRAM
,
0
))
<
0
)
{
{
fprintf
(
stderr
,
"error!
\n
"
);
fprintf
(
stderr
,
"error!
\n
"
);
fflush
(
stderr
);
fflush
(
stderr
);
return
-
1
;
return
-
1
;
}
}
int
sin_size
;
int
sin_size
;
sin_size
=
sizeof
(
struct
sockaddr_in
);
sin_size
=
sizeof
(
struct
sockaddr_in
);
bind
(
client_sockfd
,
(
struct
sockaddr
*
)
&
local_addr
,
sin_size
);
bind
(
client_sockfd
,
(
struct
sockaddr
*
)
&
local_addr
,
sin_size
);
#ifdef WIN32
int
timeout
=
2000
;
#else
struct
timeval
timeout
;
struct
timeval
timeout
;
timeout
.
tv_sec
=
2
;
timeout
.
tv_sec
=
2
;
timeout
.
tv_usec
=
0
;
timeout
.
tv_usec
=
0
;
#endif
setsockopt
(
client_sockfd
,
SOL_SOCKET
,
SO_RCVTIMEO
,
(
char
*
)
&
timeout
,
sizeof
(
struct
timeval
));
setsockopt
(
client_sockfd
,
SOL_SOCKET
,
SO_RCVTIMEO
,
(
char
*
)
&
timeout
,
sizeof
(
struct
timeval
));
...
@@ -134,14 +141,14 @@ HEART_BEAT_START:
...
@@ -134,14 +141,14 @@ HEART_BEAT_START:
fflush
(
stdout
);
fflush
(
stdout
);
kp1_cnt
=
1
;
kp1_cnt
=
1
;
kp2_cnt
=
0
;
kp2_cnt
=
0
;
srand
om
((
unsigned
int
)
time
(
NULL
));
srand
((
unsigned
int
)
time
(
NULL
));
while
(
1
)
while
(
1
)
{
{
retry_cnt
=
1
;
retry_cnt
=
1
;
while
(
1
)
while
(
1
)
{
{
length
=
make_keep_alive1_pkt1
(
pkt_data
,
kp1_cnt
);
length
=
make_keep_alive1_pkt1
(
pkt_data
,
kp1_cnt
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap1_1 request %d] len = %d
\n
"
,
\
fprintf
(
stdout
,
"<==[sended kap1_1 request %d] len = %d
\n
"
,
\
kp1_cnt
,
length
);
kp1_cnt
,
length
);
...
@@ -153,7 +160,7 @@ HEART_BEAT_START:
...
@@ -153,7 +160,7 @@ HEART_BEAT_START:
goto
HEART_BEAT_START
;
goto
HEART_BEAT_START
;
}
}
memset
(
pkt_data
,
0x00
,
1024
);
memset
(
pkt_data
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
{
fprintf
(
stdout
,
"recv kap1_1 timeout, retry %d!
\n
"
,
retry_cnt
++
);
fprintf
(
stdout
,
"recv kap1_1 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
@@ -178,7 +185,7 @@ HEART_BEAT_START:
...
@@ -178,7 +185,7 @@ HEART_BEAT_START:
while
(
1
)
while
(
1
)
{
{
length
=
make_keep_alive1_pkt2
(
pkt_data
,
seed
,
host_ip
,
kp1_cnt
);
length
=
make_keep_alive1_pkt2
(
pkt_data
,
seed
,
host_ip
,
kp1_cnt
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap1_2 request %d] len = %d
\n
"
,
\
fprintf
(
stdout
,
"<==[sended kap1_2 request %d] len = %d
\n
"
,
\
kp1_cnt
,
length
);
kp1_cnt
,
length
);
...
@@ -190,7 +197,7 @@ HEART_BEAT_START:
...
@@ -190,7 +197,7 @@ HEART_BEAT_START:
{
{
goto
HEART_BEAT_START
;
goto
HEART_BEAT_START
;
}
}
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
{
fprintf
(
stdout
,
"recv kap1_2 timeout, retry %d!
\n
"
,
retry_cnt
++
);
fprintf
(
stdout
,
"recv kap1_2 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
@@ -209,15 +216,15 @@ HEART_BEAT_START:
...
@@ -209,15 +216,15 @@ HEART_BEAT_START:
kp1_cnt
++
;
kp1_cnt
++
;
retry_cnt
=
0
;
retry_cnt
=
0
;
int16_t
rand_tmp
=
rand
om
()
%
0x10000
;
int16_t
rand_tmp
=
rand
()
%
0x10000
;
rand
[
0
]
=
rand_tmp
/
0x100
;
rand
_num
[
0
]
=
rand_tmp
/
0x100
;
rand
[
1
]
=
rand_tmp
%
0x100
;
rand
_num
[
1
]
=
rand_tmp
%
0x100
;
sleep
(
3
);
sleep
(
3
);
while
(
1
)
while
(
1
)
{
{
length
=
make_keep_alive2_pkt1
(
pkt_data
,
kp2_cnt
,
ka2_flag
,
rand
,
ka2_key
);
length
=
make_keep_alive2_pkt1
(
pkt_data
,
kp2_cnt
,
ka2_flag
,
rand
_num
,
ka2_key
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap2_1 request %d] len = %d
\n
"
,
\
fprintf
(
stdout
,
"<==[sended kap2_1 request %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
kp2_cnt
,
length
);
...
@@ -229,7 +236,7 @@ HEART_BEAT_START:
...
@@ -229,7 +236,7 @@ HEART_BEAT_START:
goto
HEART_BEAT_START
;
goto
HEART_BEAT_START
;
}
}
memset
(
pkt_data
,
0x00
,
1024
);
memset
(
pkt_data
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
{
fprintf
(
stdout
,
"recv kap2_1 timeout, retry %d!
\n
"
,
retry_cnt
++
);
fprintf
(
stdout
,
"recv kap2_1 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
@@ -259,8 +266,8 @@ HEART_BEAT_START:
...
@@ -259,8 +266,8 @@ HEART_BEAT_START:
while
(
1
)
while
(
1
)
{
{
length
=
make_keep_alive2_pkt2
(
pkt_data
,
kp2_cnt
,
ka2_flag
,
rand
,
ka2_key
,
host_ip
);
length
=
make_keep_alive2_pkt2
(
pkt_data
,
kp2_cnt
,
ka2_flag
,
rand
_num
,
ka2_key
,
host_ip
);
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
sendto
(
client_sockfd
,
pkt_data
,
length
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
(
struct
sockaddr
*
)
&
remote_addr
,
sizeof
(
remote_addr
));
fprintf
(
stdout
,
"<==[sended kap2_2 request %d] len = %d
\n
"
,
\
fprintf
(
stdout
,
"<==[sended kap2_2 request %d] len = %d
\n
"
,
\
kp2_cnt
,
length
);
kp2_cnt
,
length
);
...
@@ -272,7 +279,7 @@ HEART_BEAT_START:
...
@@ -272,7 +279,7 @@ HEART_BEAT_START:
goto
HEART_BEAT_START
;
goto
HEART_BEAT_START
;
}
}
memset
(
pkt_data
,
0x00
,
1024
);
memset
(
pkt_data
,
0x00
,
1024
);
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
if
((
length
=
recvfrom
(
client_sockfd
,
pkt_data
,
1024
,
0
,
\
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
(
struct
sockaddr
*
)
&
remote_addr
,
&
sin_size
))
==
-
1
)
{
{
fprintf
(
stdout
,
"recv kap2_2 timeout, retry %d!
\n
"
,
retry_cnt
++
);
fprintf
(
stdout
,
"recv kap2_2 timeout, retry %d!
\n
"
,
retry_cnt
++
);
...
@@ -292,12 +299,17 @@ HEART_BEAT_START:
...
@@ -292,12 +299,17 @@ HEART_BEAT_START:
sleep
(
17
);
sleep
(
17
);
}
}
#ifdef WIN32
closesocket
(
client_sockfd
);
WSACleanup
();
#else
close
(
client_sockfd
);
close
(
client_sockfd
);
#endif
return
0
;
return
0
;
}
}
static
void
print_as_hex
(
char
*
buf
,
int
len
)
static
void
print_as_hex
(
unsigned
char
*
buf
,
int
len
)
{
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
len
;
i
++
)
for
(
i
=
0
;
i
<
len
;
i
++
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment