朝鲜黑客入职美国知名网络安全公司

朝鲜的高水平国家级黑客也许还有另外一个身份:某知名美国网络安全公司的高薪员工。
Knowbe4是美国著名安全意识公司,但某朝鲜黑客却通过并不复杂的社会工程、深度伪造技术和笔记本电脑农场顺利通过了该公司的招聘程序,打入该公司内部并险些酿成大祸。该事件凸显了当今AI增强网络攻击的复杂性,以及混合办公时代加强企业人力资源部门网络安全意识和流程的重要性。

用深度伪造技术顺利通过多轮面试和背调

据知情人士透露,一名朝鲜黑客冒充美国本土的IT专业人士应聘并渗透美国网络安全公司KnowBe4,但在成功进入公司内网前被发现。

周二,KnowBe4的首席执行官兼总裁Stu Sjouwerman在一份事件报告中披露,该公司发现一名新聘用的高级软件工程师实际上是朝鲜国家级黑客,企图入侵这家安全意识培训公司的系统。Sjouwerman强调,这名假冒的IT员工在加入KnowBe4内部AI团队之前,已经顺利通过了背景调查和多轮面试。

然而,自7月15日起,KnowBe4检测到与这名新员工的工作站电脑的诸多可疑活动。
朝鲜黑客冒充IT员工渗透美国企业的做法并不新鲜。2022年,美国政府联合发布的警告中曾提醒各组织注意这一威胁。

Sjouwerman在报告中说:“我们发布了职位招聘信息,收到了简历,进行了面试,进行了背景调查,核实了推荐信并聘用了此人。我们将Mac工作站电脑寄给了“新员工”,但设备收到后立即开始加载恶意软件。”

随后,KnowBe4的终端检测和响应工具(EDR)检测到了恶意活动,并向信息安全运营中心(SOC)发出警报。SOC联系了这名新员工,并询问是否需要帮助。根据不充分的响应和可疑活动,KnowBe4判断该新员工是“内部威胁/国家级黑客”。

“攻击者进行了各种操作来操控会话历史文件、传输可能有害的文件并执行未经授权的软件,还使用树莓派下载了恶意软件。”Sjouwerman在报告中说。

与Mandiant和FBI共同进行的调查显示,黑客使用深度伪造技术获得了这份工作,并使用VPN篡改了位置。Sjouwerman写道:“我们的人力资源团队曾四次通过视频会议对该黑客进行面试,确认此人与其求职申请表上的照片相符。此外,背景调查和所有其他标准的招聘前检查都未发现问题,因为黑客使用的是被盗的(真实)身份,且照片经过AI‘增强’。”

通过“笔记本农场”冒充美国本地员工,薪水上交朝鲜政府

调查还揭示了这个骗局的更多细节。Sjouwerman表示,这名假员工的工作站被寄送到一个作为“IT骡子笔记本农场”的地址。

KnowBe4的首席信息安全官Brian Jack解释了IT骡子笔记本农场的工作原理。

“这些试图获得工作机会的人大多数本人并不在美国。他们需要一个美国地址来接收公司发给员工的设备,”Jack说:“所谓笔记本电脑农场就是用于接受(美国企业邮寄给远程办公员工的)办公电脑的小型网络,运营该农场的美国本地个人会启动收到的电脑并配置远程访问。远在万里之外的黑客或非法务工人员随后会连接到笔记本农场网络,从那里远程访问公司设备。该人的安全和访问日志会显示为来自美国并且使用正确的设备。”

接下来,黑客会操控VPN位置,并在其工作所在地的夜间工作,使其看起来像是在美国的白天工作的美国本地人。

Sjouwerman在报告中说:“黑客实际上取得了在美国(非法)工作的机会,得到高薪并将大量收入交给朝鲜以资助其非法项目。这对我们构成了严重的风险。”

在2022年的警告中,政府机构还指出,这些假员工的目标是为朝鲜民主主义人民共和国筹集资金,以资助政府的武器开发等项目。

Sjouwerman提供了检测和防止此类骗局的建议,包括进行视频面试和扫描内部远程设备。他警告企业不要过于依赖电子邮件推荐信,并进行更彻底的背景调查。

他强调,这一内部威胁突显了企业需要部署更严格的审查流程,以防止APT黑客进入组织内部。

Sjouwerman在报告中说:“这一事件展示了攻击者在伪造可信身份、利用招聘和背景调查流程中的漏洞以及试图在企业系统内建立立足点方面精妙而有效的攻击技术。”


参考链接:
https://blog.knowbe4.com/how-a-north-korean-fake-it-worker-tried-to-infiltrate-us

“紫密”的前辈Enigma是怎么工作的

在密码学史中,恩尼格玛密码机(Enigma)是一种具有影响力的加密与解密文件密码机。该密码机采用了一系列相似的转子机械加解密机制,为对称加密算法的流加密奠定了基础。

恩尼格玛密码机外观看起来是一个装满了复杂而精致元件的盒子。然而,当我们打开它时,可以将其分解为相对简单的几个部分。最核心的部分包括键盘、显示器和三个转子。键盘用于输入明文,显示器则用于显示加密后的密文。三个转子负责将明文转换为密文的过程。

在恩尼格玛密码机中,当按下键盘上的某个键时,与该字母对应的密文会在显示器上亮起。这是因为转子内部集成了6条线路(在实物中是26条),可以将键盘的信号对应到显示器不同的小灯上去。例如,如果按下字母’a’键,灯’B’就会亮起,这意味着字母’a’被加密成了字母’B’。

为了提高加密的复杂性,恩尼格玛密码机还采用了三个转子的旋转机制。每个转子都可以独立旋转,并具有26个不同的位置。当输入一个字母时,转子会旋转一定的角度,使得相同的字母在加密时对应不同的密文。这种机制增加了破译的难度,使得恩尼格玛密码机在二战期间成为了一种难以破解的加密工具。

此外,为了使消息更难以破译,恩尼格玛密码机还采用了空格和标点符号的省略机制。这意味着在加密过程中,空格和标点符号不会被包括在内,从而使得密文更难以被解读。

总体而言,恩尼格玛密码机的工作原理是通过键盘输入明文,经过三个转子的转换和加密算法的处理,最终在显示器上显示密文。这种加密方式具有很高的复杂性和难以破解的特点,因此在密码学史上具有重要的地位。

然而,尽管恩尼格玛密码机在二战期间被广泛使用并被认为是安全的加密工具,但在二战末期,英国的密码学家通过不懈的努力成功地破解了恩尼格玛密码机。这一事件成为了密码学史上的一个重要里程碑,也为我们提供了一个宝贵的教训:随着技术的发展和进步,没有任何一种加密方式是绝对安全的。

下面用C语言来实现这个加密过程,代码比较简单,仅供参考。可自己完善。

先来一段明文:Send troops to Poland today(今日出兵波兰),中间空格要去掉。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define MAX_CHARS 26

// 交换两个字符
void swap(char *a, char *b) {
    char temp = *a;
    *a = *b;
    *b = temp;
}

// 随机打乱字符数组
void shuffle(char *arr, int n) {
    for (int i = n - 1; i > 0; i--) {
        int j = rand() % (i + 1);
        swap(&arr[i], &arr[j]);
    }
}

int main() {
    // 生成字母表
    char a[MAX_CHARS];
    for (int i = 0; i < MAX_CHARS; i++) {
        a[i] = 'a' + i;
    }

    // 复制并打乱字母表
    char b[MAX_CHARS];
    memcpy(b, a, MAX_CHARS);
    shuffle(b, MAX_CHARS);

    // 建立对应密码表 (这里使用数组代替字典,下标作为索引)
    char dict[MAX_CHARS][2];
    for (int i = 0; i < MAX_CHARS; i++) {
        dict[i][0] = a[i];
        dict[i][1] = b[i];
    }

    // 待加密字符串
    char word[] = "sendtroopstopolandtoday";
    char encrypted[MAX_CHARS];

    printf("加密前: %s\n", word);

    // 加密
    int j;
    for (int i = 0; i < strlen(word); i++) {
        for (j = 0; j < MAX_CHARS; j++) {
            if (word[i] == dict[j][0]) {
                encrypted[i] = dict[j][1];
                break;
            }
        }
    }
    encrypted[strlen(word)] = '\0';

    printf("加密后: %s\n", encrypted);

    return 0;
}

结果是:

加密前: sendtroopstopolandtoday
加密后: dgncsuffjdsfjfylncsfclr

先别高兴太早,这只是单张表,很容易被破解。

为了提升破解者的难度,下面用两张表来混合加密。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define MAX_CHARS 26

// 交换两个字符
void swap(char *a, char *b) {
    char temp = *a;
    *a = *b;
    *b = temp;
}

// 随机打乱字符数组
void shuffle(char *arr, int n) {
    for (int i = n - 1; i > 0; i--) {
        int j = rand() % (i + 1);
        swap(&arr[i], &arr[j]);
    }
}

int main() {
    // 初始化随机数种子
    srand(time(NULL));

    // 生成字母表
    char a[MAX_CHARS];
    for (int i = 0; i < MAX_CHARS; i++) {
        a[i] = 'a' + i;
    }

    // 复制并打乱字母表两次
    char b[MAX_CHARS], c[MAX_CHARS];
    memcpy(b, a, MAX_CHARS);
    memcpy(c, a, MAX_CHARS);
    shuffle(b, MAX_CHARS);
    shuffle(c, MAX_CHARS);

    // 建立对应密码表 (使用二维数组表示)
    char dict1[MAX_CHARS][2], dict2[MAX_CHARS][2];
    for (int i = 0; i < MAX_CHARS; i++) {
        dict1[i][0] = a[i];
        dict1[i][1] = b[i];
        dict2[i][0] = a[i];
        dict2[i][1] = c[i];
    }

    // 待加密字符串
    char word[] = "sendtroopstopolandtoday";
    char encrypted[100];  // 确保足够大

    printf("加密前: %s\n", word);

    // 加密
    int j;
    for (int i = 0; i < strlen(word); i++) {
        for (j = 0; j < MAX_CHARS; j++) {
            if (word[i] == dict1[j][0]) {
                encrypted[i] = i % 2 == 0 ? dict1[j][1] : dict2[j][1];
                break;
            }
        }
    }
    encrypted[strlen(word)] = '\0';

    printf("加密后: %s\n", encrypted);

    return 0;
}

结果是:

加密前: sendtroopstopolandtoday
加密后: yazkownmfuomfmiqzkomhqx

双表混合法,即第一个字符是使用第一个映射表加密,第二个字符使用第二张映射表来进行加密,这可以使加密的安全度提高很多,也比较接近Enigma机的工作原理。

下面来讲明文的还原方式。

根据前面获得的两张映射表,将它们全部反转。

第一张表:

{‘a’: ‘s’, ‘b’: ‘t’, ‘c’: ‘r’, ‘d’: ‘h’, ‘e’: ‘b’, ‘f’: ‘w’, ‘g’: ‘q’, ‘h’: ‘j’, ‘i’: ‘p’, ‘j’: ‘e’, ‘k’: ‘v’, ‘l’: ‘i’, ‘m’: ‘g’, ‘n’: ‘z’, ‘o’: ‘n’, ‘p’: ‘f’, ‘q’: ‘m’, ‘r’: ‘u’, ‘s’: ‘y’, ‘t’: ‘o’, ‘u’: ‘d’, ‘v’: ‘c’, ‘w’: ‘l’, ‘x’: ‘a’, ‘y’: ‘x’, ‘z’: ‘k’}

第二张表:

{‘a’: ‘q’, ‘b’: ‘l’, ‘c’: ‘g’, ‘d’: ‘k’, ‘e’: ‘a’, ‘f’: ‘v’, ‘g’: ‘j’, ‘h’: ‘y’, ‘i’: ‘p’, ‘j’: ‘z’, ‘k’: ‘x’, ‘l’: ‘n’, ‘m’: ‘c’, ‘n’: ‘d’, ‘o’: ‘m’, ‘p’: ‘t’, ‘q’: ‘s’, ‘r’: ‘w’, ‘s’: ‘u’, ‘t’: ‘h’, ‘u’: ‘o’, ‘v’: ‘f’, ‘w’: ‘b’, ‘x’: ‘e’, ‘y’: ‘r’, ‘z’: ‘i’}

反转第一张表:

{‘s’: ‘a’, ‘t’: ‘b’, ‘r’: ‘c’, ‘h’: ‘d’, ‘b’: ‘e’, ‘w’: ‘f’, ‘q’: ‘g’, ‘j’: ‘h’, ‘p’: ‘i’, ‘e’: ‘j’, ‘v’: ‘k’, ‘i’: ‘l’, ‘g’: ‘m’, ‘z’: ‘n’, ‘n’: ‘o’, ‘f’: ‘p’, ‘m’: ‘q’, ‘u’: ‘r’, ‘y’: ‘s’, ‘o’: ‘t’, ‘d’: ‘u’, ‘c’: ‘v’, ‘l’: ‘w’, ‘a’: ‘x’, ‘x’: ‘y’, ‘k’: ‘z’}

反转第二张表:

{‘q’: ‘a’, ‘l’: ‘b’, ‘g’: ‘c’, ‘k’: ‘d’, ‘a’: ‘e’, ‘v’: ‘f’, ‘j’: ‘g’, ‘y’: ‘h’, ‘p’: ‘i’, ‘z’: ‘j’, ‘x’: ‘k’, ‘n’: ‘l’, ‘c’: ‘m’, ‘d’: ‘n’, ‘m’: ‘o’, ‘t’: ‘p’, ‘s’: ‘q’, ‘w’: ‘r’, ‘u’: ‘s’, ‘h’: ‘t’, ‘o’: ‘u’, ‘f’: ‘v’, ‘b’: ‘w’, ‘e’: ‘x’, ‘r’: ‘y’, ‘i’: ‘z’}

然后把密文填进去,就可以出来明文了。

这里还是用代码来实现:

#include <stdio.h>
#include <string.h>

int main() {
    char mm[] = "yazkownmfuomfmiqzkomhqx";
    char dict3[26][2] = {
        {'s', 'a'}, {'t', 'b'}, {'r', 'c'}, {'h', 'd'}, {'b', 'e'}, {'w', 'f'}, {'q', 'g'}, {'j', 'h'}, {'p', 'i'}, {'e', 'j'},
        {'v', 'k'}, {'i', 'l'}, {'g', 'm'}, {'z', 'n'}, {'n', 'o'}, {'f', 'p'}, {'m', 'q'}, {'u', 'r'}, {'y', 's'}, {'o', 't'},
        {'d', 'u'}, {'c', 'v'}, {'l', 'w'}, {'a', 'x'}, {'x', 'y'}, {'k', 'z'}
    };
    char dict4[26][2] = {
        {'q', 'a'}, {'l', 'b'}, {'g', 'c'}, {'k', 'd'}, {'a', 'e'}, {'v', 'f'}, {'j', 'g'}, {'y', 'h'}, {'p', 'i'}, {'z', 'j'},
        {'x', 'k'}, {'n', 'l'}, {'c', 'm'}, {'d', 'n'}, {'m', 'o'}, {'t', 'p'}, {'s', 'q'}, {'w', 'r'}, {'u', 's'}, {'h', 't'},
        {'o', 'u'}, {'f', 'v'}, {'b', 'w'}, {'e', 'x'}, {'r', 'y'}, {'i', 'z'}
    };

    char word[strlen(mm) + 1];
    word[strlen(mm)] = '\0';

    for (int i = 0; i < strlen(mm); i++) {
        if (i % 2 == 0) {
            for (int j = 0; j < 26; j++) {
                if (mm[i] == dict3[j][0]) {
                    word[i] = dict3[j][1];
                    break;
                }
            }
        } else {
            for (int j = 0; j < 26; j++) {
                if (mm[i] == dict4[j][0]) {
                    word[i] = dict4[j][1];
                    break;
                }
            }
        }
    }

    printf("明文是:%s\n", word);

    return 0;
}

明文是:sendtroopstopolandtoday

实际的Enigma机工作起来要比这个复杂很多,但基本原理类似。有兴趣的朋友可以深入研究。

无法忍受 — 马斯克删除旗下所有系统中的CrowdStrike

SpaceX与特斯拉的掌门人埃隆·马斯克宣布,旗下企业已全面卸载了争议重重的网络安全工具CrowdStrike。此举紧随全球范围内Windows 10系统的重大故障之后,该故障被证实与CrowdStrike的一项更新有关,该更新与Microsoft系统产生了冲突,引发了连锁反应。

此次IT系统崩溃波及全球,Windows 10用户无一幸免,从繁忙的机场到金融机构,再到媒体行业,均遭受了严重影响。据航空数据分析公司Cirium统计,此次事件导致全球至少4,295个航班被迫取消。

此外,包括英国的天空新闻、澳大利亚的ABC、SBS、第七频道、第九频道及澳大利亚新闻集团在内的多家媒体机构也遭遇了服务中断。

马斯克在社交平台X(原Twitter)上回应相关讨论时透露:“我们刚刚从所有系统中彻底移除了CrowdStrike。”

Microsoft的执行董事长兼首席执行官萨蒂亚·纳德拉也在X上确认,CrowdStrike的更新正是导致周五全球性中断的元凶。他表示,Microsoft正积极为受影响的客户提供技术支持与指导,协助他们安全地恢复系统功能。

对此,马斯克回应道:“这次事件给汽车供应链带来了不小的困扰。”他还对《金融时报》关于全球Windows 10中断的报道评论道,称这是“史上最大规模的IT系统失败”。

科技巨擘马斯克赞同X的安全工程主管、同时也是SpaceX首席安全工程师的克里斯托弗·斯坦利的观点。斯坦利将此次事件形容为“一个警钟,提醒我们不应在生产环境中运行与互联网相连且拥有高权限的二进制程序。”

“一次不良的更新就可能成为对手渗透的巨大后门。第三方供应商往往是系统中最脆弱的一环,”他告诫道。

CrowdStrike的首席执行官乔治·库尔茨在接受NBC采访时表达了歉意,他说道:“对于给客户、旅客以及所有受到此次系统中断影响的人带来的不便,我们深感抱歉。”

库尔茨解释称:“我们迅速发现了问题所在……系统在重启后能够恢复正常运行。”同时,他表示CrowdStrike正在与客户紧密合作,协助他们尽快恢复日常运营。这一系列事件再次凸显了网络安全领域中第三方风险管理和软件更新策略的重要性。

肇事者CrowdStrike到底是来头?

该事件的主要原因是网络安全服务公司CrowdStrike更新杀毒软件时,将Windows一个重要系统文件删除了。

据央视新闻报道,CrowdStrike首席执行官乔治·库尔茨19日在社交媒体X上和在接受美国电视媒体采访时致歉。这家公司说,此次故障涉及一款阻止网络攻击的软件的自动更新,公司已经部署修复程序,向用户发布了修复指南,其中一些系统需要进行手动修复。

微软公司副总裁兼副首席信息安全官安·约翰逊19日晚些时候说,客户正在或已经收到必要信息,并正在得到他们需要的支持,但无法估计需要多长时间让客户恢复使用微软系统。

国际分析机构福里斯特公司分析师阿莉·梅伦说,手动修复需要删除受损文件等,比较耗时,而CrowdStrike的一些大客户可能管理着数百万台计算机,他们可能需要几天或更长时间完成修复工作。

公开资料显示,CrowdStrike成立于2011年,总部位于美国得克萨斯州奥斯汀,业务遍及170多个国家,截至1月份,员工人数超过7900人。CrowdStrike为企业提供基于云的安全解决方案。它的Falcon工具(周五中断的原因之一)可识别异常行为和漏洞,以保护计算机系统免受恶意软件等威胁。公司报告称,截至4月的季度收入超过9亿美元,其中美国收入占近70%。

CrowdStrike提供的软件类型与较旧、功能较有限的安全软件类型截然不同。传统的防病毒软件在计算机和互联网的早期非常有用,因为它能够寻找已知恶意软件的迹象,但随着网络攻击变得越来越复杂,传统杀毒软件已经不再受欢迎。而CrowdStrike开发的被称为“终端检测和响应”软件的产品功能更加完善,可以不断扫描机器以查找任何可疑活动的迹象并自动做出响应。

但要做到这一点,这些程序必须获得访问权限,以检查计算机操作系统的核心是否存在安全缺陷。这种访问权限使它们能够破坏它们试图保护的系统。这就是微软的Windows系统在周五的宕机事件中发挥作用的原因,最终引发了全球“蓝屏死机”这一问题。CrowdStrike将该事件归咎于“在Windows主机的单个内容更新中发现的缺陷”。

据市场研究公司IDC称,CrowdStrike控制了价值86亿美元的全球“现代”端点检测和响应软件市场约18%的份额,略高于其主要竞争对手微软。其软件被认为是抵御各种新兴黑客威胁的最佳防御软件之一,使用人工智能和传统安全策略来跟上黑客攻击者的步伐。

CrowdStrike在全球拥有约29000名客户。Alphabet、谷歌、亚马逊和英特尔等一些全球最大的科技公司都是其客户。该公司的业务涉及多个行业,美国政府也是其客户之一。

知名嵌入式操作系统Mbed宣布停止更新

近日,Arm官方宣布,Mbed开发平台和操作系统将于2026年7月起终止使用,届时Mbed网站将被存档,将无法再利用在线工具中构建项目。

Mbed表示,Mbed OS软件是开源的,将保持公开可用,但Arm将不再积极维护。

同时,Mbed TLS项目不受此公告的影响,并将继续作为TrustedFirmware社区项目的一部分受到支持。

os.mbed.com中的原文如此表示:

Mbed自2009年以来一直是一个非常受欢迎的项目,它帮助专业开发人员、教育用户和创客社区在由Mbed合作伙伴和贡献者开发的基于Arm的硬件上创建、保护、部署和更新数千个应用程序。自推出以来,嵌入式和物联网开发已经发生了巨大的变化和扩展,在此发展过程中,Arm对CMSIS等行业标准以及一套用于专业和学术用途的嵌入式和物联网开发工具进行了大量投资。

与此同时,Arm支持的项目(如micro:bit、Arduino和Raspberry Pi)在教育环境和创客社区中发展势头强劲,使Mbed提供的许多功能变得更加普及和易于访问,无论是基于浏览器的IDE和硬件抽象到代码托管和远程构建服务。我们相信,这些需求现在可以通过更广泛的生态系统得到最好的满足,而无需Arm的直接支持。

Arm始终致力于投资物联网开发,专注于我们认为将最有效地服务于行业和学术界的标准、工具和教育内容,因为我们将继续支持每个人在Arm上构建计算的未来。

树莓派AI 套件上市,带NPU售价 70 美元

如果你曾经想在 Raspberry Pi 5 上尝试神经网络、人工智能和机器学习的世界,树莓派这次推出了官方AI 套件。该 AI 套件是与 Hailo 合作开发的,它可将本地高效的推理能力,集成到各种应用程序中。现已上架 Raspberry Pi 的经销商网络,价格 70 美元。

Raspberry Pi AI 套件拆解

Raspberry Pi AI 套件包括我们的 M.2 HAT+ 和 Hailo-8L AI 加速器模块。AI 套件安装在 Raspberry Pi 5 上,可让你快速构建复杂的 AI 视觉应用程序,实时运行。具有低延迟和低功耗要求。用于对象检测、语义和实例分割、姿态估计和面部识别(仅举几例)的先进神经网络完全在 Hailo-8L 协处理器上运行,使 Raspberry Pi 5 CPU 可以自由地执行其它任务。

Raspberry Pi AI 套件的主要功能包括:

  • 每秒 13 万亿次运算 (TOPS) 的推理性能
  • 以 8Gbps 运行的单通道 PCIe 3.0 连接
  • 与 Raspberry Pi 图像软件子系统完全集成
  • 与第一方或第三方相机的兼容性
  • 加速器硬件的高效调度:在单个摄像头上运行多个神经网络,或者同时在两个摄像头上运行单个 / 多个神经网络

搭载AI Kit的树莓派5

Hailo创建了一个庞大的模型库,用户可以在这里找到各种各样的预训练神经网络模型,可以在AI Kit上部署和优化。

地址:

https://github.com/hailo-ai/hailo_model_zoo/tree/master/docs/public_models/HAILO8L

软件方面

最新版本的 Raspberry Pi OS 会自动检测 Hailo 模块,因此操作系统和利用该模块的应用程序可以立即使用它。rpicam-apps 套件现在有一个后处理模板,用于在摄像头管道中集成实时运行的神经网络推理。

“通过使用预安装的 Hailo Tappas 后处理库,仅几百行 C++ 代码就能创建基于 AI 的高级应用程序。类似级别的集成到我们的 Picamera2 框架中很快就会实现。”

除了可以在 rpicam-apps 或 Picamera2 中使用 Hailo-8L 协处理器外。Raspberry Pi AI Kit 中还打包了集成在 GStreamer 框架和本地 Python 或 C/C++ 应用程序中的 API。包括非摄像机用例,例如在预先录制的视频文件上运行推理。

近看Hailo模块

软件安装步骤非常简单。通过apt安装几个软件包,重新启动,你就可以在几分钟内尝试我们的一些AI演示。完整的说明可以在我们的入门指南中找到。下面是我们的一些演示的预览,你可以通过rpicam-apps运行。

详细步骤:

https://www.raspberrypi.com/documentation/accessories/ai-kit.html#getting-started

有了树莓派AI Kit,你不但可以在picam-apps或Picamera2中使用Hailo-8L协处理器。树莓派还打包了一个集成在GStreamer框架和本地Python或C/C++应用程序中的API。这包括非相机用例,例如在预先录制的视频文件上运行推理。

英国Raspberry Pi公司伦敦上市首日股价飙升

6月12日,据彭博社消息,英国知名个人电脑制造商Raspberry Pi于伦敦证券交易所成功上市,首日股价大幅上涨,为近年来伦敦新股上市市场注入了一剂强心针。这家总部位于剑桥的科技公司周二收盘价为每股385便士,较其首次公开募股(IPO)价格280便士上涨了38%,并在盘中交易中一度上涨43%,市值达到约5.42亿英镑。

Raspberry Pi的强劲表现不仅提振了伦敦市场,也为英国资本市场带来了急需的优质资金。Montanaro Asset Management的基金经理亚当·蒙塔纳罗(Adam Montanaro)表示:“Raspberry Pi的IPO为英国资本市场注入了活力,希望这能成为未来英国创新型企业在国内上市的催化剂。”

该公司生产的低成本电脑因其易用性和多功能性而深受业余爱好者和教育工作者的喜爱。此次IPO超额认购数倍,定价处于市场区间的最高端,显示出市场对Raspberry Pi股票的强烈需求。

作为自2023年7月跨境支付公司Cab Payments Holdings Plc上市以来伦敦规模最大的新股上市,Raspberry Pi的IPO对于伦敦市场来说无疑是一大利好。近年来,伦敦在IPO市场复苏中相对滞后,英国交易所占今年欧洲IPO融资额的比例仅为2%左右。

Raspberry Pi的成功上市对于提振英国科技界信心具有重要意义。尽管此次IPO规模较小且流通股有限,但分析师普遍认为,这有助于鼓励其他科技创始人考虑在英国本土上市。Quilter Cheviot的分析师本·巴林杰(Ben Barringer)表示:“英国经济要复苏还有很长的路要走,但希望此次IPO能够成为推动英国科技行业发展的一个积极信号。”

此前,Raspberry Pi已经从英国芯片制造商Arm Holdings Plc和索尼集团公司的半导体部门筹集了资金。招股说明书显示,Arm承诺在此次IPO中购买价值3500万美元的股票,而英国资产管理公司Lansdowne Partners也同意购买高达2000万美元的股票。

Raspberry Pi以其廉价的单板计算机而闻名,这些设备可以通过编程来执行各种任务。去年,该公司售出了740万台设备,并预计今年将售出840万台。Jefferies Financial Group Inc.和Peel Hunt LLP共同主导了此次发行,公司股票代码为RPI。

怎么看出对方是一个无人机高手

作者:王文文

https://weibo.com/u/1644305150

1、看飞机洁净度,如果他的飞机看上去跟刚买来一样,很新很干净。大概率他是个菜鸟,飞的全是easy模式,漆都不会碰掉一点。但如果他的飞机一看脏兮兮的,里面粘的不是草就是土,大概率他是个资深飞手。

2、看飞机牌子,如果对方是普通的大牌子,比如大疆、道通。未必是菜鸟,因为大疆和道通这种太广泛了。但如果对方用的是一个小众品牌,你就要注意了。(P.S: 九十九块钱的玩具不在此处讨论范围……)如果对方用的是自己组装的,不用问。大概率是个高手。

3、看飞机外挂,新手一般是不怎么会往飞机上装东西的,最多贴一些贴纸。但老手经常会往上装各种奇奇怪怪的外挂。比如投掷器什么的。还有一些人会装电池固定器,这种一般都是狠人,因为高速的花飞很容易把电池撞掉,而电池撞掉后图传和指令接收全部完蛋,所以这是一个猛人常备配件。

4、看心态,大部分的官方教程都告诉你“姿态模式”很危险,要避免。但实际很多地方就是没卫星信号,就是得靠手动。你就说你飞不飞吧,不敢飞换人。高手遇到“姿态模式”警告一般都比较淡定,而新手遇到突然的“姿态模式”都会慌。

5、看纪律,高手习惯事前勘探地形,确定航线。事中严格遵守自己的计划,不额外加戏,不搞突发奇想。因为在复杂地形下的商业拍摄,炸机很影响进度。除非你带了一堆的备用飞机和备用电池去完成任务,否则,请遵守纪律,保护好设备,一定要先完成预设任务。

6、看人,喜欢夸夸其谈的,大多比较菜,比如我这种。真正的高手要么沉浸在飞行中,要么在总结经验教学,回顾前面的飞行还有什么改进的地方,哪些区域会丢信号,哪些地方会丢图传……是否有完成雇主的要求……总之,话不多的。当然,如果他正在讲课得另当别论。给新人多讲两句,避免无谓的炸机。好事啊,应该的。

DrissionPage,不用给爬虫装驱动了

DrissionPage是一个基于Python的网页自动化库,它结合了selenium和requests的优点,可以轻松实现网页的自动化操作。DrissionPage的主要特点是其简洁的API设计,使得用户可以很容易地编写代码来实现网页自动化。

特点

  • 简洁的API设计:DrissionPage的API设计非常简洁,用户无需深入了解Selenium的底层实现,也能进行复杂的网页交互。
  • 结合了selenium和requests的优点:既可以实现动态网页的自动化,也可以实现静态网页的自动化。
  • 灵活性:支持多种选择器,包括CSS选择器、XPath选择器等,适应不同的网页结构。
  • 强大的等待机制:内置智能等待,确保元素在操作前已经加载完成。
  • 支持多种浏览器:DrissionPage支持多种浏览器,包括Chrome、Firefox等。

 

​安装

安装DrissionPage非常简单,只需要通过pip安装即可:

pip install drissionpage
 

初始化

在使用DrissionPage之前,需要先进行初始化。可以使用以下代码进行初始化:

from DrissionPage import MixPage
page = MixPage(‘chrome’)
 

这里我们使用Chrome浏览器进行初始化,你也可以使用其他浏览器,例如Firefox。

打开网页

初始化之后,可以使用open_url方法来打开一个网页。

例如,我们可以使用以下代码来打开百度首页:

page.open_url(‘https://www.baidu.com’)
 

查找元素

在打开网页之后,我们通常需要查找网页中的元素。DrissionPage提供了多种方法来查找元素,例如ele、eles、css、xpath等。例如,我们可以使用以下代码来查找百度首页的搜索框:

search_box = page.ele(‘#kw’)
 

这里我们使用ele方法来查找id为kw的元素。

操作元素

在找到元素之后,我们可以对元素进行各种操作,例如输入文本、点击等。例如,我们可以使用以下代码来在百度搜索框中输入文本并搜索:

search_box.send_keys(‘Python’)
page.ele(‘#su’).click()
 

这里我们使用send_keys方法来输入文本,使用click方法来点击搜索按钮。

获取元素信息

在找到元素之后,我们还可以获取元素的各种信息,例如文本、属性等。例如,我们可以使用以下代码来获取百度搜索结果的第一条结果的标题:

title = page.ele(‘.t a’).text
print(title)
 

此外,DrissionPage支持复杂的网页交互,例如填写表单、点击按钮等:

# 填写表单
browser.find_element_by_name(‘username’).send_keys(‘my_username’)
browser.find_element_by_name(‘password’).send_keys(‘my_password’)

# 点击登录按钮
browser.find_element_by_xpath(‘//button[@type=”submit”]’).click()
 

其他示例

DrissionPage可以用于各种网页操作,下面是一些常见的使用示例:

# 处理下拉菜单
browser.find_element_by_id(‘dropdown’).click()
browser.find_element_by_xpath(‘//option[@value=”option-value”]’).click()

# 滚动到页面底部
browser.scroll_to_bottom()

# 获取当前页面的URL
current_url = browser.get_current_url()

# 下拉刷新
page.execute_script(‘window.scrollTo(0, document.body.scrollHeight)’)

# 上传文件
upload_button = page.ele(‘#upload’)
upload_button.send_keys(‘path/to/your/file’)

 

工作原理

DrissionPage的工作原理非常简单。它首先使用requests库来请求网页,然后使用selenium库来加载网页。在加载网页之后,就可以使用selenium的方法来查找元素、操作元素等。

高级用法

DrissionPage还支持多窗口和多标签页操作、自定义等待、处理JavaScript弹窗等高级功能:

切换到新的标签页

browser.open_new_tab()

 

自定义等待

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wait = WebDriverWait(page.driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, ‘some_id’)))
 

这里我们使用selenium的WebDriverWait和expected_conditions来实现自定义等待。

处理JavaScript弹窗

page.driver.switch_to.alert.accept()
 

这里我们使用switch_to.alert.accept()来处理JavaScript弹窗。

总结

DrissionPage是一个功能强大且易于使用的Python库,它简化了网页自动化操作,使得即使是编程新手也能快速上手。通过本文的介绍,相信你已经对DrissionPage有了基本的了解,并且能够开始使用它来完成你的网络爬虫项目。

附录

  • DrissionPage的相关文档:https://gitee.com/g1879/DrissionPage
  • selenium官方文档:https://www.selenium.dev/documentation/en/
  • requests官方文档:https://requests.readthedocs.io/en/m

心机黑客潜伏两年后向XZ添加后门 多个Linux发行版中招影响服务器安全

最近Linux 社区最关注的事情就是 xz-utils (以前被称为 LZMA Utils) 项目被植入后门的事情,xz 是被 Linux 发行版广泛使用的压缩格式之一,xz-utils 是一个开源项目,2022 年起有个名为 Jia Tan 的账号开始向该项目贡献代码,然后逐步接手该项目成为项目的主要贡献者。

日前该项目被发现存在后门,这些恶意代码旨在允许未经授权的访问,具体来说影响 xz-utils 5.6.0 和 5.6.1 版中,而且这些受影响的版本已经被多个 Linux 发行版合并。

简单来说这是一起供应链投毒事件,攻击者通过上游开源项目投毒,最终随着项目集成影响 Linux 发行版,包括 Fedora Linux 40/41 等操作系统已经确认受该问题影响。

恶意代码的目的:

RedHat 经过分析后认为,此次黑客添加的恶意代码会通过 systemd 干扰 sshd 的身份验证,SSH 是远程连接系统的常见协议,而 sshd 是允许访问的服务。

在适当的情况下,这种干扰可能会让黑客破坏 sshd 的身份验证并获得整个系统的远程未经授权的访问 (无需 SSH 密码或密钥)。

RedHat 确认 Fedora Linux 40/41、Fedora Rawhide 受该问题影响,RHEL 不受影响,其他 Linux 发行版应该也受影响,具体用户可以在开发商网站获取信息。

建议立即停止使用受影响版本:

如果你使用的 Linux 发行版受上述后门程序影响,RedHat 的建议是无论个人还是商用目的,都应该立即停止使用。

之后请查询 Linux 发行版的开发商获取安全建议,包括检查和删除后门程序、回滚或更新 xz-utils 等。

孤独的开源贡献者问题:

在这里还需要额外讨论一个开源项目的问题,xz-utils 尽管被全世界的 Linux 发行版、压缩软件广泛使用,但在之前只有一名活跃的贡献者在维护这个项目。

这个孤独的贡献者可能因为精力不够或者其他原因,在遇到一名新的贡献者时,随着时间的推移,在获取信任后,这名新贡献者逐渐获得了项目的更多控制权。

实际上这名黑客应该也是精心挑选的项目,知道这种情况下可能更容易获取控制权,于是从 2022 年开始就贡献代码,直到成为主要贡献者后,再实施自己的后门行动。

未来这类针对开源项目的供应链攻击应该还会显著增加,这对整个开源社区来说应该都是头疼的问题。

全球首个RISC-V公有云发布

欧洲云提供商 Scaleway 自豪地推出一系列 RISC-V 服务器,再次标志着其对创新的承诺以及对培育未来技术的奉献。

RISC-V 是一种用于 CPU 的开放指令集架构,将成为世界上越来越多的国家寻求重新获得半导体生产主权的主导架构。微处理器领域的一场革命即将到来,其基础是采用通用语言,不受商业许可和地缘政治限制。

“RISC-V 服务器的推出是 Scaleway 的具体而直接的声明,旨在推动技术主权向从最低层到上层所有人开放的生态系统发展。这一在新兴市场大胆而富有远见的举措为所有参与者开辟了新的前景”, Scaleway 研发总监 Sébastien Luttringer 说道。

Scaleway 现在主动向其客户提供一系列 RISC-V 服务器。该计划旨在促进应用程序开发并鼓励欧洲微处理器制造领域的领导者的崛起。RISC-V 是一种比现有标准更节能的技术,向 RISC-V 的过渡也为数据中心更可持续的解决方案打开了大门,从而进一步履行了 Scaleway 对可持续发展的承诺。

Elastic Metal RV1 配备 T-HEAD TH1520 SoC、16GB RAM 和 128GB 存储,每月价格为 15.99 欧元,适合所有预算。RISC-V 架构虽然是新的且仍在优化中,但由于其现代和开放的设计,已经提供了令人惊讶的高性能水平。因此,它已经成为 x86 和 ARM 等现有架构的可靠替代方案。

“我们很高兴成为第一个在云中提供 RISC-V 服务器的公司,为我们的客户提供了新的机会,以满足对主权、效率和可持续性日益增长的需求。这项创新是我们朝着独立和可持续发展的愿景又迈出了一步。具有竞争力的欧洲云”,Scaleway 首席执行官 Damien Lucas 补充道。

EM-RV1 服务器是 Scaleway 巴黎实验室数月研发的成果。他们设计的每个方面,从第一个原型到 3D 打印外壳,都见证了一种迭代的手工方法,可在最短的时间内为您提供一系列强大的云端 RISC-V 服务器。

来自:

https://www.design-reuse.com/news/55812/scaleway-risc-v-datacenter-server-cloud.html