Merge pull request 'classified' (#3) from classified into master

Reviewed-on: #3
This commit is contained in:
Anoduck The Anonymous Duck 2023-10-22 09:26:02 +02:00
commit 34d3fbb350
3 changed files with 77 additions and 14 deletions

12
.gitignore vendored
View file

@ -6,21 +6,9 @@ crda-*
*.puml
*.txt
*.csv
clients.txt
clients.csv
essid.txt
ssids.txt
ssid.txt
key2pub.py
db.txt
wireless-regdb*
example.ipynb
aps.txt
APs.txt
APS.txt
db.txt
ct_results.csv
ct_aps.csv
config.ini
share/*
### Generated by gibo (https://github.com/simonwhitaker/gibo)

View file

@ -14,7 +14,7 @@ import argparse
from scapy.sendrecv import sniff
from scapy.sendrecv import AsyncSniffer
from scapy.sendrecv import sendp
from scapy.sendrecv import sr1
from scapy.sendrecv import srp1
from scapy.layers.dot11 import Dot11Beacon
from scapy.layers.dot11 import Dot11
from scapy.layers.dot11 import Dot11Elt
@ -204,6 +204,16 @@ def PRN2(pkt):
# ███████║ ██║ ██║ ██║██║ ██║██║██║ ╚████║███████╗██║ ██║
# ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝
# ----------------------------------------------------------------
# print("ToDS:", frame.FCfield & 0b1 != 0)
# print("MF:", frame.FCfield & 0b10 != 0)
# print("WEP:", frame.FCfield & 0b01000000 != 0)
# print("src MAC:", frame.addr2)
# print("dest MAC:", frame.addr1)
# print("BSSID:", frame.addr3)
# print("Duration ID:", frame.ID)
# print("Sequence Control:", frame.SC)
# print(feature(frame))
# print("\n")
def strainer(pkt) -> None:
if pkt[Dot11].type == 0 and pkt[Dot11].subtype == 4:
bssid = pkt[Dot11FCS].addr2
@ -214,7 +224,7 @@ def strainer(pkt) -> None:
addr2=macaddr,
ID=65535)
log.debug('Sending RTS frame to {0} with type 11'.format(bssid))
res = sr1(new_pkt, timeout=3, verbose=0, retry=0)
res = srp1(new_pkt, timeout=3, verbose=0, retry=0)
if res:
if res[Dot11].type == 1 and res[Dot11].subtype == 12:
log.debug('Recieved CTS packet.')

65
probe-iterator.py Normal file
View file

@ -0,0 +1,65 @@
from netaddr.core import NotRegisteredError
from netaddr import *
from scapy.all import *
import logging
import logging.handlers
PROBE_REQUEST_TYPE=0
PROBE_REQUEST_SUBTYPE=4
WHITELIST = ['18:dc:56:f0:40:40','34:a3:95:b1:2b:d9','48:13:7e:57:ae:b6','98:0c:a5:17:7d:2d']
my_logger = logging.getLogger('agentlogger')
handler = logging.handlers.RotatingFileHandler('tplink3022.log', mode='a', maxBytes=1048576, backupCount=10, encoding=None, delay=0)
my_logger.addHandler(handler)
def PacketHandler(pkt):
if pkt.haslayer(Dot11):
if pkt.type==PROBE_REQUEST_TYPE and pkt.subtype == PROBE_REQUEST_SUBTYPE:
PrintPacket(pkt)
def mac_info(mac):
global macf
maco = EUI(mac)
try:
macf = maco.oui.registration().org
except NotRegisteredError:
macf = "Not available"
return macf
def PrintPacket(pkt):
print("Probe Request Captured:")
try:
extra = pkt.notdecoded
except:
extra = None
if extra!=None:
signal_strength = -(256-ord(extra[-4:-3]))
else:
signal_strength = -100
print("No signal strength found")
mac_info(pkt.addr2)
print("Time: %s Source: %s SSID: %s MANF: %s RSSi: %d"%(pkt.time,pkt.addr2,pkt.getlayer(Dot11ProbeReq).info,macf,signal_strength))
str = "%s,%s,%s,%s,%d\n"%(pkt.time,pkt.addr2,pkt.getlayer(Dot11ProbeReq).info,macf,signal_strength)
WriteToFile(str)
def WriteToFile(str):
my_logger.warn(str)
def main():
from datetime import datetime
print("[%s] Starting scan"%datetime.now())
print("Scanning :")
try:
sniff(iface=sys.argv[1],prn=PacketHandler,count=0,store=0)
except:
print('[!] Eroor : Failed to initialize sniffing')
if __name__=="__main__":
main()