社区首页 >问答首页 >在python中坚持框架验证条件

在python中坚持框架验证条件
EN

Stack Overflow用户
提问于 2015-05-08 16:03:25
回答 1查看 82关注 0票数 2

我认为大多数python用户都可以回答这个问题,而且在知识方面是相当笼统的,但对我来说,我无法理解。

这是代码:

代码语言:javascript
代码运行次数:0
复制
            if ssid in net and p.addr2 not in clients:
                count +=1
                get_oui(p.addr2)
                net.append(ssid)
                checkmac(p.addr2)
                mps+=1   
                print str(count)+'>',p.addr2+' ('+G+macf+W+') <--Probing--> '+O+ssid+W+' < '+Y+'MPS'+W
                if args.log:
                    wr_log(p.addr2,ssid,macf)

            elif ssid not in net and p.addr2 in clients:
                count +=1
                net.append(ssid)
                get_oui(p.addr2)
                clients.append(p.addr2)
                mpm+=1   
                print str(count)+'>',p.addr2+' ('+G+macf+W+') <--Probing--> '+O+ssid+W+' < '+Y+'MPM'+W
                if args.log:
                    wr_log(p.addr2,ssid,macf)
            elif ssid not in net and p.addr2 not in clients:                    
                count +=1                                     
                        net.append(ssid)
                get_oui(p.addr2)  
                checkmac(p.addr2) 
                print str(count)+'>',p.addr2+' ('+G+macf+W+') <--Probing--> '+O+ssid+W
                if args.log:
                    wr_log(p.addr2,ssid,macf)

下面是你们需要知道的:这个脚本是一个接一个地监视和分析无线数据包,我从每个数据包中提取ssid、mac地址和制造商数据。客户端容易发送具有相同数据的重复数据包,其中将有唯一的数据包和唯一的数据。

当前SSID存储ssid,当前MAC存储在p.addr2中。以前的ssid和p.addr2值分别存储在lists 'net‘和'clients’中。

对于大多数数据包,我的代码存活下来并且是有效的,但是对于一个特殊的条件,我丢失了。考虑以下假设的ssid和mac地址的值:

代码语言:javascript
代码运行次数:0
复制
SSID  MAC
S1    A
S2    A
S1    B
S2    B

对于第一个场景,第三个条件适用于第二个场景,第二个条件适用于第三个场景,第一个条件适用于第四个条件,所有条件都不成立,对吗?因为当使用"not in“和"in”操作数检查列表时,它会发现客户端和ssid都已经存在,因此会删除数据包,而这是一个有效的条件,意味着基本上有2个客户端正在查找相同的ssid,我希望打印它。但如果我这么做

代码语言:javascript
代码运行次数:0
复制
elif ssid in net and p.addr2 in clients:
                get_oui(p.addr2)  
                checkmac(p.addr2)
                print str(count)+'>',p.addr2+' ('+G+macf+W+') <--Probing--> '+O+ssid+W

重复的数据包开始打印,因为每个客户端发送多个具有相同数据的数据包,而这种情况可能会出现。如何实现条件,以便验证clients[]中的多个客户端在net[]中寻找多个ssid的情况?

按照cmidi的建议:我试着用字典,并试图这样访问它,它仍然给我复本!

代码语言:javascript
代码运行次数:0
复制
            if count > 0:
                for k,v in obs.items():
                    if k and v != p.addr2 and ssid: 
                        count +=1
                        get_oui(p.addr2)
                        net.append(ssid)
                        checkmac(p.addr2)
                        obs[p.addr2] = ssid
                        mps+=1   
                        print str(count)+'>',p.addr2+' ('+G+macf+W+') <--Probing--> '+O+ssid+W+' < '+Y+'MPS'+W
                        if args.log:
                            wr_log(p.addr2,ssid,macf)
            else:
                count +=1
                get_oui(p.addr2)
                net.append(ssid)
                checkmac(p.addr2)
                obs[p.addr2] = ssid   
                print str(count)+'>',p.addr2+' ('+G+macf+W+') <--Probing--> '+O+ssid+W+' < '+Y+'MPS'+W
                if args.log:
                    wr_log(p.addr2,ssid,macf)

这是怎么回事?

@lmz,因此,根据请求,这是所有事物的工作方式,或者更确切地说,应该是这样的:

对于我扫描的每一个数据包,我都获得我的SSID、MAC和制造商值。我希望将这些数据保存在一起,只有SSID和MAC,因为在丢弃其他重复数据包之后,它们作为一对将是唯一的。对于第一个包,我不需要任何检查就打印值,我们有第一组值,然后从第二个包开始检查重复值和某些条件。理想情况下,为了尽可能地减少代码,这里应该直接检查SSID:从列表中的第一个数据包、dict、ordereddict等中捕获的MAC对。在这里,除了排序之外,它们还需要能够扫描所有以前的对,删除列表中的每一对,与传入的SSID:MAC不匹配的dict。如果找不到副本,则将新的SSID:MAC对添加到列表、dict等中,否则,如果发现重复,则循环中断,然后我们移动到第三个数据包,以此类推。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-08 20:22:34

我给出了一个字典的例子,这样你也可以存储相关的数据。如果您想要订单,只需将dict更改为collections.OrderedDict,如下所示。因为您说它是复制的,所以我假设MPMMPS位是无用的。如果你需要的话请告诉我。

示例(假设您有字符串SSID & MAC):

代码语言:javascript
代码运行次数:0
复制
from collections import OrderedDict
packets = [
    ('S1', 'A'), ('S2', 'A'), ('S1', 'B'),
    ('S2', 'B'), ('S1', 'A'), ('S1', 'B')
]



# seen_packets = OrderedDict() # if order is required
seen_packets = dict()

for ssid, mac in packets:
    print "Considering SSID ", ssid, " and MAC ", mac
    ssid_mac = (ssid, mac)
    if ssid_mac in seen_packets:
        print "Seen this before - not adding"
    else:
        data_for_packet = True # your own data here (timestamp?)
        print "Never seen this SSID/MAC combo before"
        seen_packets[ssid_mac] = data_for_packet

print "Unique ssid,mac pairs with data:"
for (ssid, mac), data in seen_packets.iteritems():
    print ssid, mac, data

关键是要理解元组(ssid, mac)是字典的perfectly valid key,如果ssidmac都是字符串,那么就不需要有多个列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30134557

复制
相关文章
【Python】解析Python中的条件
当len(strString)>6为真时,索引值为1,也就返回True。当len(strString)>6为假时,索引值为0,也就返回False。
py3study
2020/01/16
2.6K0
ERP商谈,你在坚持什么?
前几天一个CIO朋友找我聊,谈到他们公司目前正在升级换代ERP系统,刚开始ERP选型以及实施方选择还算顺利,但是到了商谈环节,双方开始僵持不下,拖了很长的时间。
SAP梦心
2022/07/07
3030
Python中的条件语句
Python中的条件语句是通过一条或多条语句的执行结果(True或者False)来决定要执行的代码块。主要通过if关键字实现,条件中的其他分支用else。
小博测试成长之路
2021/11/08
3.7K0
在Excel中创建条件格式图表
问题:希望图表中对于比率为90或以上的呈现绿色,70至90的呈现黄色,低于70的呈现红色。可以在图表中设置条件格式吗?如下图1所示。
fanjy
2023/09/15
4030
在Excel中创建条件格式图表
PostgreSQL 如果想知道表中某个条件查询条件在索引中效率 ?
最近一直在寻找,如何不通过 select count(*) from table where 字段 = ‘值’ 类似这样的语句,大约会产生多少结果行的问题的解决方案。在一些大表存在的数据库,去不断查询某一个值在这个大表里面的行数,一直是不受欢迎的事情,最后找到了一个还算靠谱的方案。
AustinDatabases
2023/09/18
1880
PostgreSQL  如果想知道表中某个条件查询条件在索引中效率 ?
在python中实现基于ICE框架的cl
ICE (Internet Communication Engine) 是zeroc公司实现的通信中间件
py3study
2020/01/03
2.1K0
坚持在简书写博客的好处
简书写到了200篇, 多少能感受到, 坚持写博客的好处 打发时间 在大学的开始写博客, 对一个不怎么擅长"到处浪浪浪"的大学生, 周末往往是最难熬的, 打游戏太菜, 看电影太困,玩手机太废, 出去玩
zhaoolee
2018/08/22
5430
坚持在简书写博客的好处
【python高级】元类在测试框架中的运用
我们知道了元类的基本用法,也写了一个小demo,接下来我们就尝试运用进我们测试框架。
梦无矶小仔
2023/08/03
1480
【python高级】元类在测试框架中的运用
python中的条件判断语句
在python中使用条件判断语句一定不要忘记if else elif后面的冒号:哦
py3study
2020/01/06
2.3K0
python中的条件判断语句
Python 中的条件对象——线程同步
为了更有效地同步对任何资源的访问,我们可以将条件与任务相关联,让任何线程等待,直到满足某个条件,或者通知其他线程该条件正在满足,以便它们可以解除对自身的阻止。
很酷的站长
2023/08/15
1840
Python 中的条件对象——线程同步
在CRI运行中验证容器镜像签名
Kubernetes社区自v1.24版本开始对其基于容器镜像的工件进行签名。随着v1.26版本中相应增强功能从alpha版本升级为beta版本,引入了对二进制工件的签名。其他项目也采用了这种方法,为其发布提供了镜像签名。这意味着它们可以在自己的CI/CD流水线中创建签名,例如使用GitHub Actions,或者依靠Kubernetes镜像推广流程通过向k/k8s.io存储库提交拉取请求来自动签名镜像。使用此流程的要求是项目必须是kubernetes或kubernetes-sigs GitHub组织的一部分,以便利用社区基础设施将镜像推送到暂存存储桶中。
灵雀云
2023/08/09
4420
在CRI运行中验证容器镜像签名
python中多个if语句用法_python中if函数多个条件怎么用
1.只有 if 进行判断desserts = [‘ice cream’, ‘chocolate’, ‘apple crisp’, ‘cookies’]
全栈程序员站长
2022/11/09
4.4K0
【前端框架】我为什么坚持选择用React?
从一脚迈入前端开发行业开始,每一位开发人员都要做出抉择:选择哪个框架长期陪伴自己。
ConardLi
2020/07/09
8520
坚持使用普通雷达,特斯拉是不是在“舍本逐末”?
昨日,有消息称,特斯拉宣布进行Autopilot2.0的升级,关于细节部分,除了比1.0增加了更多的传感器等硬件设施之外,特斯拉还会将Autopilot的现有功能移植到新硬件上,并通过无线方式对软件进
镁客网
2018/05/28
4340
python中unittest框架_unittest框架原理
在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行。使用测试框架可以互不影响的用例执行及更灵活的执行控制。
全栈程序员站长
2022/11/07
8860
python中unittest框架_unittest框架原理
spring笔记 验证框架
验证框架 依赖 注解 注 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> 注解 @Validated:类型、方法、方法参数。不能用在成员属性(字段)上 @Valid:方法、构造函数、方法参数和成员属性(字段)上 注 方法参数验证写在接口上即可; 类内部方法调用无效;
路过君
2020/06/19
3970
验证兼容的框架
包含兼容框架的包需要确保针对某个框架编译的代码可以针对另一个框架运行。 兼容框架对的示例包括:
用户4268038
2022/01/09
5940
点击加载更多

相似问题

Zend框架:条件验证

31

坚持使用CSS StackLayout框架

10

Rails坚持使用验证

11

坚持django表单验证

10

在ios设备上坚持使用社交框架

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档