改用AES256
This commit is contained in:
parent
d420e58926
commit
9c77d9ecc2
2
Makefile
2
Makefile
@ -7,7 +7,7 @@ OBJ := sha
|
||||
|
||||
all: aes.o sha.o
|
||||
$(CC) $(CFLAGS) -o $(OBJ) $^ $(LDFLAGS)
|
||||
$(STRIP) $(OBJ)
|
||||
: $(STRIP) $(OBJ)
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) -c $<
|
||||
|
||||
|
10
README.md
10
README.md
@ -18,15 +18,13 @@
|
||||
|
||||
## Help Information
|
||||
|
||||
SHA
|
||||
SHA
|
||||
Shell Strict AES 128 bit encryption tool
|
||||
Author: AIXIAO@AIXIAO.ME
|
||||
AUTHOR: AIXIAO@AIXIAO.ME
|
||||
|
||||
Usage:
|
||||
sha [-kfh?]
|
||||
-k : Key
|
||||
-f : Script File
|
||||
-h -? : Print Help
|
||||
-k : key
|
||||
-f : Script file
|
||||
|
||||
|
||||
静态链接:
|
||||
|
4
aes.h
4
aes.h
@ -21,9 +21,9 @@
|
||||
#define CTR 1
|
||||
#endif
|
||||
|
||||
#define AES128 1
|
||||
//#define AES128 1
|
||||
//#define AES192 1
|
||||
//#define AES256 1
|
||||
#define AES256 1
|
||||
|
||||
#define AES_BLOCKLEN 16 // Block length in bytes - AES is 128b block only
|
||||
|
||||
|
60
sha.c
60
sha.c
@ -21,7 +21,7 @@ long file_size;
|
||||
|
||||
static void hex2str(uint8_t * input, uint16_t input_len, char *output)
|
||||
{
|
||||
char *hexEncode = "0123456789ABCDEF";
|
||||
const char *hexEncode = "0123456789ABCDEF";
|
||||
int i = 0, j = 0;
|
||||
|
||||
for (i = 0; i < input_len; i++) {
|
||||
@ -84,9 +84,9 @@ char *source_c[] = {
|
||||
"#define CTR 1",
|
||||
"#endif",
|
||||
"",
|
||||
"#define AES128 1",
|
||||
"//#define AES128 1",
|
||||
"//#define AES192 1",
|
||||
"//#define AES256 1",
|
||||
"#define AES256 1",
|
||||
"",
|
||||
"#define AES_BLOCKLEN 16 // Block length in bytes - AES is 128b block only",
|
||||
"",
|
||||
@ -603,7 +603,8 @@ char *source_c[] = {
|
||||
" if (0 == strncmp(shbin, \"#!\", 2))",
|
||||
" {",
|
||||
" p1 = strchr(shbin, '/');",
|
||||
" strcpy(shbin, p1);",
|
||||
" memcpy(shbin, p1, (p - shll_text) - 2);",
|
||||
" shbin[(p - shll_text) - 2] = '\\0';",
|
||||
" }",
|
||||
" else if (0 == strncmp(shbin, \":\", 1))",
|
||||
" {",
|
||||
@ -656,14 +657,14 @@ char *source_c[] = {
|
||||
"int main(int argc, char *argv[])",
|
||||
"{",
|
||||
" char *argvs[BUFFER_SIZE];",
|
||||
" char *shbin = NULL;",
|
||||
" int l=1;",
|
||||
" int i=4;",
|
||||
"",
|
||||
" struct AES_ctx ctx;",
|
||||
" uint8_t *Hex_string = (uint8_t *) malloc(encrypted_text_len*2);",
|
||||
" char *shbin = NULL;",
|
||||
"",
|
||||
|
||||
"",
|
||||
" reverse_string((char *)Encrypted_data, encrypted_text_len*2);",
|
||||
" memset(Hex_string, 0, encrypted_text_len*2);",
|
||||
"",
|
||||
@ -722,28 +723,21 @@ char *source_c[] = {
|
||||
0
|
||||
};
|
||||
|
||||
void reverse_string(char *str)
|
||||
void reverse_string(char *str, int length)
|
||||
{
|
||||
int length;
|
||||
char *p1;
|
||||
char *p2;
|
||||
|
||||
length = strlen(str); //获取字符串长度
|
||||
p1 = str; //p1指向字符串首地址
|
||||
p2 = str + length - 1; //p2指向字符串尾地址
|
||||
if (!str) {
|
||||
if (str == NULL) {
|
||||
printf("空指针错误!");
|
||||
return;
|
||||
}
|
||||
while (p1 < p2) //当p1地址小于p2地址时执行循环
|
||||
{
|
||||
char c = *p1;
|
||||
*p1 = *p2; //完成指针指向地址的值的交换
|
||||
*p2 = c;
|
||||
p1++; //交换完毕后p1指针指向下一个字符地址
|
||||
p2--; //交换完毕后p2指针指向上一个字符地址
|
||||
}
|
||||
|
||||
char *start = str;
|
||||
char *end = str + length - 1;
|
||||
|
||||
while (start < end) {
|
||||
char temp = *start;
|
||||
*start++ = *end;
|
||||
*end-- = temp;
|
||||
}
|
||||
}
|
||||
|
||||
void usage(void)
|
||||
@ -774,12 +768,12 @@ char pool[] = {
|
||||
|
||||
int rand_key(char *key)
|
||||
{
|
||||
int PASSWD_LEN = 16;
|
||||
int PASSWD_LEN = 32;
|
||||
struct timeval tpstart;
|
||||
char password[17];
|
||||
char password[33];
|
||||
int i = 0;
|
||||
|
||||
memset(password, 0, 17);
|
||||
memset(password, 0, 33);
|
||||
gettimeofday(&tpstart, NULL);
|
||||
srand(tpstart.tv_usec);
|
||||
|
||||
@ -794,7 +788,7 @@ int rand_key(char *key)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
static uint8_t key[17] = "";
|
||||
static uint8_t key[33] = "";
|
||||
char sh_file[1024];
|
||||
int indx = 0;
|
||||
|
||||
@ -866,15 +860,15 @@ int main(int argc, char *argv[])
|
||||
//转16进制字符串
|
||||
hex2str(text_content, file_size, (char *)hexString);
|
||||
|
||||
reverse_string((char *)hexString);
|
||||
reverse_string((char *)hexString, text_content_length*2);
|
||||
|
||||
//拼接
|
||||
strcat((char *)encrypted_text, "char Encrypted_data[]=\"");
|
||||
strcat((char *)encrypted_text, (const char *)hexString);
|
||||
strncat((char *)encrypted_text, "char Encrypted_data[]=\"", 24);
|
||||
strncat((char *)encrypted_text, (const char *)hexString, text_content_length*2);
|
||||
strcat((char *)encrypted_text, "\";");
|
||||
|
||||
strcpy(encrypted_key, "const char key[17] = \"");
|
||||
strcat((char *)encrypted_key, (char *)key);
|
||||
memcpy(encrypted_key, "const char key[33] = \"", 23);
|
||||
strncat((char *)encrypted_key, (char *)key, 32);
|
||||
strcat((char *)encrypted_key, "\";");
|
||||
|
||||
// 长度
|
||||
@ -916,6 +910,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
//remove(sourcefile);
|
||||
free(buff);
|
||||
free(hexString);
|
||||
|
||||
|
||||
// 压缩
|
||||
if (system("which upx 1> /dev/null") == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user