1.求一个基于openssl写的源码ecc曲线的源代码
2.病毒分析Babuk勒索家族babyk后缀系列分析--Windows篇
求一个基于openssl写的ecc曲线的源代码
下面的例子生成两对ECC密钥,并用它做签名和验签,源码并生成共享密钥。源码
#include <string.h>
#include <stdio.h>
#include <openssl/ec.h>
#include <openssl/ecdsa.h>
#include <openssl/objects.h>
#include <openssl/err.h>
int main()
{
EC_KEY *key1,源码*key2;
EC_POINT *pubkey1,*pubkey2;
EC_GROUP *group1,*group2;
int ret,nid,size,i,sig_len;
unsigned char*signature,digest[];
BIO *berr;
EC_builtin_curve *curves;
int crv_len;
char shareKey1[],shareKey2[];
int len1,len2;
/* 构造EC_KEY数据结构 */
key1=EC_KEY_new();
if(key1==NULL)
{
printf("EC_KEY_new err!\n");
return -1;
}
key2=EC_KEY_new();
if(key2==NULL)
{
printf("EC_KEY_new err!\n");
return -1;
}
/* 获取实现的椭圆曲线个数 */
crv_len = EC_get_builtin_curves(NULL, 0);
curves = (EC_builtin_curve *)malloc(sizeof(EC_builtin_curve) * crv_len);
/* 获取椭圆曲线列表 */
EC_get_builtin_curves(curves, crv_len);
/
*nid=curves[0].nid;会有错误,原因是源码密钥太短
*/
/* 选取一种椭圆曲线 */
nid=curves[].nid;
/* 根据选择的椭圆曲线生成密钥参数group */
group1=EC_GROUP_new_by_curve_name(nid);
if(group1==NULL)
{
printf("EC_GROUP_new_by_curve_name err!\n");
return -1;
}
group2=EC_GROUP_new_by_curve_name(nid);
if(group1==NULL)
{
printf("EC_GROUP_new_by_curve_name err!\n");
return -1;
}
/* 设置密钥参数 */
ret=EC_KEY_set_group(key1,group1);
if(ret!=1)
{
printf("EC_KEY_set_group err.\n");
return -1;
}
ret=EC_KEY_set_group(key2,group2);
if(ret!=1)
{
printf("EC_KEY_set_group err.\n");
return -1;
}
/* 生成密钥 */
ret=EC_KEY_generate_key(key1);
if(ret!=1)
{
printf("EC_KEY_generate_key err.\n");
return -1;
}
ret=EC_KEY_generate_key(key2);
if(ret!=1)
{
printf("EC_KEY_generate_key err.\n");
return -1;
}
/* 检查密钥 */
ret=EC_KEY_check_key(key1);
if(ret!=1)
{
printf("check key err.\n");
return -1;
}
/* 获取密钥大小 */
size=ECDSA_size(key1);
printf("size %d \n",size);
for(i=0;i<;i++)
memset(&digest[i],i+1,1);
signature=malloc(size);
ERR_load_crypto_strings();
berr=BIO_new(BIO_s_file());
BIO_set_fp(berr,stdout,BIO_NOCLOSE);
/* 签名数据,本例未做摘要,源码uiautomator源码分析可将digest中的源码数据看作是sha1摘要结果 */
ret=ECDSA_sign(0,digest,,signature,&sig_len,key1);
if(ret!=1)
{
ERR_print_errors(berr);
printf("sign err!\n");
return -1;
}
/* 验证签名 */
ret=ECDSA_verify(0,digest,,signature,sig_len,key1);
if(ret!=1)
{
ERR_print_errors(berr);
printf("ECDSA_verify err!\n");
return -1;
}
/* 获取对方公钥,不能直接引用 */
pubkey2 = EC_KEY_get0_public_key(key2);
/* 生成一方的源码共享密钥 */
len1=ECDH_compute_key(shareKey1, , pubkey2, key1, NULL);
pubkey1 = EC_KEY_get0_public_key(key1);
/* 生成另一方共享密钥 */
len2=ECDH_compute_key(shareKey2, , pubkey1, key2, NULL);
if(len1!=len2)
{
printf("err\n");
}
else
{
ret=memcmp(shareKey1,shareKey2,len1);
if(ret==0)
printf("生成共享密钥成功\n");
else
printf("生成共享密钥失败\n");
}
printf("test ok!\n");
BIO_free(berr);
EC_KEY_free(key1);
EC_KEY_free(key2);
free(signature);
free(curves);
return 0;
}
病毒分析Babuk勒索家族babyk后缀系列分析--Windows篇
Babuk勒索家族的Babyk后缀系列分析主要针对Windows系统。该勒索软件于年初首次曝光,源码迅速跻身于最臭名昭著的源码勒索软件组织之列。其加密功能与大多数勒索软件相似,源码采用了多种加密方法,源码包括HC-/ChaCha8对称加密算法、源码椭圆曲线Diffie-Hellman(ECDH)以及SHA哈希。源码加密后文件的源码外卖自提柜源码后缀被修改为.babyk,并在加密内容尾部附加字符串“choung dong looks like hot dog!!!”作为与Babuk家族的标识。
该加密器对不同系统类型(Linux、NAS、Windows)有三种病毒文件,本文主要分析针对Windows的版本。Babyk行为的唐山小程序源码解析和源码泄漏,以及Windows部分的加密执行流程、多线程方式、使用Curve算法生成密钥、AES加密算法进行文件加密等技术细节,都被详尽地分析。Babuk家族的其他常见后缀和勒索病毒,如.live、QQ恶搞冻结源码locked、mallox、jopanaxye等,也在此文中提及。
Windows部分加密执行主要采用多线程方式,利用Curve算法作为加密算法,每个文件使用黑客公钥进行密钥交换,目录网盘源码生成各自的私钥和公钥。加密速度优化是其目标,以确保在最短时间内加密中招电脑资料。
勒索软件家族已形成成熟的商业体系,分支众多,迭代多个版本。每个家族的攻击手法各有特点,如TellYouThePass利用系统漏洞,Phobos通过RDP暴力破解,Mallox利用数据库及暴力破解等。预防措施包括定期资产梳理、服务调优、安全意识增强等。solar团队在勒索解密与数据恢复领域拥有丰富的经验,提供高效、安全、可靠的服务,并通过自主研发及创新,构建了网络安全行业合格的资质体系。
面对勒索病毒的威胁,建议进行资产排查、服务调优、全员安全意识增强等风险消减措施。团队提供"免费售前+安心保障+专业恢复+安全防御"一体化服务流程,确保数据恢复与安全防御的有效性。通过与客户的合作,团队确保在数据恢复后提供后续的安全支持,防止二次感染,帮助客户恢复正常工作。