- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我认为大多数Python用户都可以回答这个问题,并且在知识方面相当普遍,但对我来说我无法弄清楚。
这是代码:
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 值分别存储在列表中 - 'net' 和 'clients'。
对于大多数数据包,我的代码都可以保存并且有效,但对于一种特殊情况,我丢失了。考虑 ssid 和 mac 地址的这些假设值:
SSID MAC
S1 A
S2 A
S1 B
S2 B
对于第一种情况,第三个条件成立对于第二种情况,第二个条件成立对于第三种情况,第一个条件成立对于第四个条件,没有一个条件成立,对吗?因为当使用“not in”和“in”操作数检查列表时,它会发现客户端和 ssid 都已存在,因此会丢弃数据包,而这是一个有效条件,意味着基本上有 2 个客户端正在寻找相同的数据包相同的 ssid,我希望将其打印出来。但如果我这样做:
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
重复的数据包开始打印出来,因为每个客户端发送多个具有相同数据的数据包,而这种情况可能会出现。如何实现一个条件,以便我可以验证 client[] 中的多个客户端正在 net[] 中查找多个 ssid 的情况???
根据cmidi的建议:我尝试使用字典并尝试以这种方式访问它,它仍然给我重复项!
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:MAC 对、dict、ordereddict 等。这里不仅仅是排序,它们的代码还需要能够扫描遍历所有先前的对,删除列表中与传入 SSID:MAC 不匹配的字典对。如果未找到重复项,则新的 SSID:MAC 对将添加到列表、字典等中。否则,如果发现重复项,则循环将中断,我们将移至第三个数据包,依此类推。
最佳答案
我给出了一个带有字典的示例,以便您也可以存储关联的数据。如果您想要顺序,只需将 dict
更改为 collections.OrderedDict
即可,如图所示。既然你说它是重复的,并且唯一的,我假设 MPM 和 MPS 位是无用的。如果您需要它们,请告诉我。
示例(假设您有字符串 SSID 和 MAC):
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对于字典,如果 ssid
和 mac
都是字符串,因此不需要多个列表。
关于python - python中卡住的框架验证条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134557/
在 JSF2 应用程序中遇到验证属性的问题时,有两种主要方法。 使用 Annotation 在 ManagedBean 上定义验证 @ManagedBean public class MyBean {
我想实现一个不常见的功能,我认为 jquery 验证插件将是最好的方法(如果您在没有插件的情况下建议和回答,我们也会欢迎)。我想在用户在输入字段中输入正确的单词后立即隐藏表单。我试过这个: $("
我有几个下拉菜单(类名为month_dropdown),并且下拉菜单的数量不是恒定的。我怎样才能为它们实现 NotEqual 验证。我正在使用 jQuery 验证插件。 这就是我写的 - jQuery
我设法制作了这个网址验证代码并且它起作用了。但我面临着一个问题。我认为 stackoverflow 是获得解决方案的最佳场所。 function url_followers(){ var url=do
我目前正在使用后端服务,该服务允许用户在客户端应用程序上使用 Google Games 库登录。 用户可以通过他们的 gplay ID 向我们发送信息,以便登录或恢复旧帐户。用户向我们发送以下内容,包
我正在尝试验证输入以查看它是否是有效的 IP 地址(可能是部分地址)。 可接受的输入:172、172.112、172.112.113、172.112.113.114 Not Acceptable 输入
我从 Mongoose 验证中得到这条消息: 'Validator failed for path phone with value ``' 这不应该发生,因为不需要电话。 这是我的模型架构: var
我一直在尝试使用Python-LDAP (版本 2.4.19)在 MacOS X 10.9.5 和 Python 2.7.9 下 我想在调用 .start_tls_s() 后验证与给定 LDAP 服务
我正在处理一个仅与 IE6 兼容的旧 javascript 项目(抱歉...),我想仅在 VS 2017 中禁用此项目的 ESLint/CSLint/Javascript 验证/CSS 验证。 我知道
我正在寻找一种方法来验证 Spring 命令 bean 中的 java.lang.Double 字段的最大值和最小值(一个值必须位于给定的值范围之间),例如, public final class W
我正在尝试在 springfuse(JavaEE 6 + Spring Framework (针对 Jetty、Tomcat、JBoss 等)) 和 maven 的帮助下构建我的 webapps 工作
我试图在我们的项目中使用 scalaz 验证,但遇到了以下情况: def rate(username: String, params: Map[String, String]): Validation
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
我有一个表单,人们可以单击并向表单添加字段,并且我需要让它在单击时验证这些字段中的值。 假设我单击它两次并获取 2 个独立的字段集,我需要旋转 % 以确保它在保存时等于 100。 我已放入此函数以使其
在我的页面中有一个选项可以创建新的日期字段输入框。用户可以根据需要创建尽可能多的“截止日期”和“起始日期”框。就像, 日期_to1 || date_from1 日期到2 ||日期_from2 date
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
有没有办法在动态字段上使用 jquery 验证表单。 我想将其设置为必填字段 我正在使用 Jsp 动态创建表单字段。 喜欢 等等...... 我想使用必需的表单字段验证此表单字段。 最佳答
嗨,任何人都可以通过提供 JavaScript 代码来帮助我验证用户名文本框不应包含数字,它只能包含一个字符。 最佳答案 使用正则表达式: (\d)+ 如果找到匹配项,则字符串中就有一个数字。 关于J
我有两个输入字段holidayDate和Description(id=tags) $(document).ready(function() {
我遇到了这个问题,这些验证从电子邮件验证部分开始就停止工作。 我只是不明白为什么即使经过几天的观察,只是想知道是否有人可以在这里指出我的错误? Javascript部分: function valid
我是一名优秀的程序员,十分优秀!