88 lines
1.9 KiB
Python
88 lines
1.9 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
'''
|
|
Nerves
|
|
|
|
sniff packets from interface en0 using python module scapy (2.3.1)
|
|
generate led color for bhoreal in usb midi mode depending on packet port number
|
|
send led number + color to PD patch boreal.pd
|
|
in OSC format : /bhoreal/in lednumber ledcolor
|
|
color is midi parameter so 0 to 127.
|
|
v0.3
|
|
By Sam Neurohack
|
|
LICENCE : CC
|
|
'''
|
|
|
|
from OSC import OSCClient, OSCMessage
|
|
from time import sleep
|
|
import types
|
|
import random
|
|
from scapy.all import *
|
|
|
|
client = OSCClient()
|
|
msg = OSCMessage()
|
|
|
|
counter = 0
|
|
|
|
def sendled(zzzport):
|
|
global counter
|
|
|
|
zzz = zzzport % 127
|
|
# zzz = led color
|
|
msg = OSCMessage()
|
|
msg.setAddress("/bhoreal/in")
|
|
msg.append(counter)
|
|
msg.append(zzz)
|
|
try:
|
|
client.sendto(msg, ('127.0.0.1', 9002))
|
|
msg.clearData()
|
|
except:
|
|
print 'Connection refused'
|
|
pass
|
|
sleep(0.001)
|
|
counter += 1
|
|
if counter > 63:
|
|
counter = 0
|
|
|
|
|
|
|
|
def print_summary(pkt):
|
|
if IP in pkt:
|
|
ip_src=pkt[IP].src
|
|
ip_dst=pkt[IP].dst
|
|
|
|
|
|
if TCP in pkt:
|
|
tcp_sport=pkt[TCP].sport
|
|
tcp_dport=pkt[TCP].dport
|
|
|
|
if tcp_sport < 50000:
|
|
print " IP src " + str(ip_src) + " TCP sport " + str(tcp_sport)
|
|
sendled(tcp_sport)
|
|
if tcp_dport < 50000:
|
|
print " IP dst " + str(ip_dst) + " TCP dport " + str(tcp_dport)
|
|
sendled(tcp_dport)
|
|
if UDP in pkt:
|
|
udp_sport=pkt[UDP].sport
|
|
udp_dport=pkt[UDP].dport
|
|
|
|
if udp_sport < 50000:
|
|
print " IP src " + str(ip_src) + " UDP sport " + str(udp_sport)
|
|
sendled(udp_sport)
|
|
|
|
if udp_dport < 50000:
|
|
print " IP dst " + str(ip_dst) + " UDP dport " + str(udp_dport)
|
|
sendled(udp_dport)
|
|
|
|
|
|
if ARP in pkt and pkt[ARP].op in (1,2):
|
|
print " ARP"
|
|
sendled(67)
|
|
|
|
|
|
|
|
def handle_error(self,request,client_address): # All callbacks
|
|
pass
|
|
|
|
sniff(iface='en0', prn=print_summary, store=0) |