小编rho*_*lke的帖子

Python Scapy wrpcap - 如何将数据包附加到pcap文件?

我有一些软件可以模拟BER和网络延迟等问题.我需要一种方法来测试软件的BER模块,以确保它真正正常工作.我的解决方案是创建一个程序,发送原始以太网帧,类型字段设置为未使用的类型.以太网帧内部只是随机位.对于发出的每个帧,我需要将帧记录到pcap文件中.在网络链路的另一端将是一个接收应用程序,它只是将它看到的每个数据包写入自己的pcap日志.测试完成后,将比较两个pcap日志以获得BER.

我正在使用python模块Scapy,到目前为止它完成了我需要的一切.我可以发送带有随机数据的原始以太网帧,并在Wireshark中查看它们.但是,我不知道如何将wrpcap()方法附加到pcap文件,而不是覆盖.我知道我可以写一个包列表wrpcap,但是这个应用程序需要能够无限期地运行,我不想等到应用程序退出写入发送到硬盘的所有数据包.因为在内存中存储很多,如果发生了什么事,我将不得不从头开始测试.

我的问题是:如何pcap使用scapy而不是覆盖文件来附加到pcap文件?它甚至可能吗?如果不是那么什么模块可以做我需要的?

在寻找Scapy具有我的功能的东西时,我遇到了dpkt,但我没有找到很多文档.可以dpkt做我想问的问题,如果可以,我可以在哪里获得一些好的文档呢?

python networking network-programming scapy raw-ethernet

10
推荐指数
2
解决办法
2万
查看次数

为什么nosetests说--with-coverage不是一个选择?

我正在使用nosetests来自动发现和运行我的单元测试.我还想让它生成报道报告.

当我使用以下命令运行nosetests时,一切正常

nosetests .
Run Code Online (Sandbox Code Playgroud)

我在网上查询生成覆盖率,nosetests有一个命令行参数--with-coverage.我还仔细检查了这个命令是否存在使用nosetests --help.但是,每当我运行以下命令时,我得到以下输出

nosetests --with-coverage .
Usage: nosetests [options]

nosetests: error: no such option: --with-coverage
Run Code Online (Sandbox Code Playgroud)

我仔细检查了通过运行安装coverage插件

nosetests --plugins
Run Code Online (Sandbox Code Playgroud)

覆盖率与一堆其他插件一起显示在列表中.

我也知道我已经安装了覆盖,因为我可以使用以下内容手动运行覆盖数据集:

coverage run test.py
Run Code Online (Sandbox Code Playgroud)

我是否滥用了--with-coverage选项?或者还有其他我想念的东西?

提前致谢.

python unit-testing code-coverage nosetests coverage.py

7
推荐指数
1
解决办法
5360
查看次数

格式化文件路径

我是Python的新手,所以我可能会完全错误,但是我在获取和更改文件目录时遇到了问题.我的脚本包含多个文件名,可以在任何目录中.在我的脚本中,我需要python更改到文件的目录,然后执行一些操作.但是,我在更改目录时遇到问题.

这是我到目前为止所尝试的:

path=os.path.split(<file path>)
os.chdir(path[0])
<Do things to file specified by path[1]>
Run Code Online (Sandbox Code Playgroud)

我获取文件路径的方法是从资源管理器拖动到命令行.这会输入路径名称"C:\foo\bar\file_name.txt".当我在翻译中运行第一行时,我就出去了('C:\\foo\bar','file_name.txt').问题是由于某种原因,最后的反斜杠不会自动转义,因此当我运行该os.chdir(path[0])行时会出现错误.

我的问题是为什么最后一个反斜杠不像其他反斜杠一样自动转义?如何手动逃避最后一个反斜杠?有没有更好的方法来获取文件的目录并更改它?

python file-io

6
推荐指数
1
解决办法
8150
查看次数

对CBC和ECB使用相同的AES密钥

概观

我正在尝试为服务器和客户端提供一种方法,以便能够为每个请求生成唯一的IV,这对于每个客户端都是不同的,但是确定性的.我的意思是确定性是服务器可以计算未来任何请求的IV,只知道起始序列.

我需要此功能的原因是我使用AES加密来实现一次性密码(OTP)方案.当客户端登录到服务器时,它会获得一个种子.通过加密该种子生成第一个OTP.对于每个后续请求,客户端使用服务器和客户端之间的共享AES密钥加密最后一个OTP.因此,即使攻击者在没有共享密钥的情况下嗅探最后一个OTP,他们也无法获得下一个OTP.OTP在CBC模式下使用AES加密.如果服务器和客户端不同步,则会出现问题.我计划处理这个的方式是在服务器端生成一些未来的OTP,看看它们是否与客户端相匹配.但是,如果没有确定性地计算每次加密迭代的IV的方法,这是不可能的.

在我进入我提出的解决方案之前,让我表达我对AES,IV,CBC和ECB的理解.这样,如果我对我的基本原则有任何误解,可以指出并纠正.

理论

欧洲央行

我知道ECB将为使用相同密钥加密的相同明文块产生相同的输出.因此,它不应该用于多个数据块,因为可以通过统计分析数据来辨别有关明文的信息.基于此,似乎如果你可以保证你的数据总是小于16字节(128位),它将消除统计攻击的问题.此外,如果您还可以保证从未使用相同的密钥加密相同的明文,您将永远无法获得相同的输出.因此,在我看来,假设您的系统始终符合这些非常严格的标准,使用ECB是安全的.

CBC和IV

我知道CBC旨在消除这两个问题.通过链接块,它消除了ECB的多块统计攻击.从不对同一个AES密钥使用相同的IV,可以消除使用相同密钥对同一输出加密相同明文的问题.

关键唯一性

如果每个客户端获得生成的AES密钥,那么当多个用户具有相同密钥的可能性很小时,机会非常小.因此,可以安全地假设没有两个客户端将使用相同的AES密钥.

建议的解决方案

我建议的解决方案是为每个客户端提供唯一的AES密钥.生成密钥时,计数器将初始化为随机数.每次必须加密某些东西时,计数器将增加1.此数字将填充到块中,然后在ECB模式下使用AES加密.这个输出将是我使用CBC加密数据的IV.

如果服务器与客户端的计数器不同步,因为它具有相同的密钥而ECB不需要IV,它可以继续生成IV,直到找到允许数据被解密的IV.

我的想法是这个IV是安全的统计攻击,因为它等于AES的块大小.此外,每次用户都会有所不同,因为每个用户都有一个唯一的密钥,计数器总是递增.显然,必须安全地传输AES密钥(现在客户端正在使用服务器的公共RSA密钥加密生成的密钥).

我的问题

我对所提出的解决方案中描述的技术的基本理解是否正确?我提议的解决方案有什么明显的错误吗?是否存在使用相同密钥以建议方式生成IV以及使用CBC加密的安全漏洞?

我意识到最后一个问题可能很难/不可能回答,因为密码学真的很难,但任何见解都会受到赞赏.

提前致谢.

security encryption cryptography aes erlang-otp

6
推荐指数
1
解决办法
1766
查看次数

不确定是什么导致我的分段错误 - C++

嗨,我有一些编程经验,但我对指针不是很好.我一直在尝试调试我一直在研究的这个程序,但它一直给我一个分段错误.我的代码如下:

#include <iostream>

using namespace std;

class hexagon
{
public:
    hexagon();
    ~hexagon();
    void setSide(int side, hexagon *hexpiece);
    hexagon* getSide(int side);

    void setPos(int x, int y);
    int getX();
    int getY();

    void setID(int id);
    int getID();
private:
    hexagon *side0, *side1, *side2, *side3, *side4, *side5;
    int itsid, itsx, itsy;
};

hexagon::hexagon()
{
    side0 = NULL;
    side1 = NULL;
    side2 = NULL;
    side3 = NULL;
    side4 = NULL;
    side5 = NULL;
}

hexagon::~hexagon()
{
}

void hexagon::setSide(int side, hexagon *hexpiece)
{
    switch(side)
    {
        case …
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault

2
推荐指数
1
解决办法
1439
查看次数