我已经使用 python + scapy 编写了一个无线探针嗅探器。我想在 openwrt 路由器中使用这个脚本。
每次它从附近的设备捕获探测请求时,都会将信息发送到 Web 服务。(mac、电源和探头)。
我的问题是CPU的高消耗。该脚本在我的笔记本电脑上运行得很好(它需要 50-70% 的 cpu),但是当我在 openwrt 路由器(400mhz cpu,16 ram)中运行它时,它需要 99%。这是 scapy 中的一个众所周知的错误,即高负载丢失数据包(我同时测试了笔记本电脑和路由器中的脚本,路由器没有捕获空中所有可用的数据包)
我已经对代码做了一些优化,但我认为还有更多的改进空间。
这是脚本。
#!/usr/bin/python
from scapy.all import *
import time
import thread
import requests
from datetime import datetime
PROBE_REQUEST_TYPE=0
PROBE_REQUEST_SUBTYPE=4
buf={'arrival':0,'source':0,'dest':0,'pwr':0,'probe':0}
uuid='1A2B3'
def PacketHandler(pkt):
global buf
if pkt.haslayer(Dot11):
if pkt.type==PROBE_REQUEST_TYPE and pkt.subtype == PROBE_REQUEST_SUBTYPE:
arrival= int(time.mktime(time.localtime()))
try:
extra = pkt.notdecoded
except:
extra=None
if extra!=None:
signal_strength = -(256-ord(extra[-4:-3]))
else:
signal_strength = -100
source = pkt.addr2
dest= pkt.addr3
pwr=signal_strength
probe=pkt.getlayer(Dot11).info
if buf['source']!=source …Run Code Online (Sandbox Code Playgroud) 我正在使用 AWS Lambda 中的加密库。我已在 Amazon Linux VM 中使用 pip 编译了该包。我已将包作为图层上传。不管怎样,每次我调用库时,我都会遇到一个根本不具有描述性的错误:
Unable to import module 'lambda_function': libffi-ae16d830.so.6.0.4: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,错误不是因为找不到库,而是因为我找不到另一个共享模块。
以下是我尝试在 Lambda 上执行的代码示例:
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.fernet import Fernet
password_provided = "test123"
password = password_provided.encode()
salt = b'test_'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(password))
message = "message from db".encode()
f = Fernet(key)
encrypted = f.encrypt(message)
print(encrypted)
f …Run Code Online (Sandbox Code Playgroud)