Beispiel #1
0
    def run(self):
        """
        Method called when starting the daemon. 
        """
        try:
            logger.info("TapDaemon has started")
            tap0 = TunTapDevice(name="tap0", flags=IFF_TAP)
            tap0.hwaddr = '\x00\x11\x22\x33\x44\x55'
            tap0.addr = '192.168.0.1'
            tap0.dstaddr = '192.168.0.2'
            tap0.netmask = '255.255.255.0'
            tap0.mtu = 1500
            tap0.persist(True)
            tap0.up()
            logger.info("tap0 interface created")
        except:
            logger.exception("exception: ")
            
        try:
            tap1 = TunTapDevice(name="tap1", flags=IFF_TAP)
            tap1.hwaddr = '\x00\x11\x22\x33\x44\x66'
            tap1.addr = '192.168.1.1'
            tap1.dstaddr = '192.168.1.2'
            tap1.netmask = '255.255.255.0'
            tap1.mtu = 1500
            tap1.persist(True)
            tap1.up()
            logger.info("tap1 interface created")
        except:
            logger.exception("exception: ")
            
        try:
            while True:
                time.sleep(2)
                frame = Ethernet(dst="\x01\x02\x03\x04\x05\x06", src="\x0A\x0B\x0C\x0D\x0E\x0F", type = 0x9100, data = "\x02\x55\x44\x00\x11\x00\x00\x00\x33\x22\x00\x00" + "\x61"*40) # "\x11\x00\x00\x00\x33\x22\x00\x00" #"\x00\x03\x08\x00"
                tap0.write("\x11\x22\x33\x44" + str(frame)) 
                logger.info("Frame send to tap0")

                logger.info("Waiting for frame in tap1...")
                buf = tap1.read(tap1.mtu)
                logger.info("Received %s", hexlify(buf))
                logger.info("\n\n ---------------------------------------------------")
        except:
            logger.exception("exception: ")
def create_tun(tun_name):
    tun = TunTapDevice(name=tun_name, flags=(IFF_TUN | IFF_NO_PI))
    tun.addr = '10.6.0.1'
    tun.dstaddr = '0.0.0.0'
    tun.netmask = '0.0.0.0'
    tun.mtu = 1500
    '''
    res = os.system('route add default gw' + ' 10.6.0.1 ' + tun_name)
    if res == 0:
        return tun
    else:
        return None'''

    return tun
Beispiel #3
0
def start_main(rec, loc, dst, passwd,ifname):
    tunnel = WhatsAppMessageTunnel()
    # Create TUN device for network capture and injections
    tun = TunTapDevice(name='socialtun')

    print(tun.name + ' has been created, information follows:')

    tun.addr = loc
    tun.dstaddr = dst
    tun.netmask = '255.255.255.0'
    tun.mtu = 40000
    password = passwd

    print('Address: ' + tun.addr)
    print('Dest.-Address: ' + tun.dstaddr)
    print('Netmask: ' + tun.netmask)
    print('MTU: ' + str(tun.mtu))


    # Start TUN device
    tun.up()
    up = True

    print('TUN is up')


    # Create the receive thread via our helper method
    # thread = threading.Thread(target=main_loop_starter)
    thread = threading.Thread(target=recv_loop, args=(tunnel, rec, password, tun))
    thread.start()
    thread = threading.Thread(target=ping_server, args=(loc,))
    thread.start()
    while True:
        # Continually read from the tunnel and write data in base64
        buf = tun.read(tun.mtu)
        rc4obj = ARC4.new(password)
        tunnel.send(rec+"@s.whatsapp.net", base64.b64encode(rc4obj.encrypt(buf)))
        #print (buf)

    # Cleanup and stop application
    up = False
    tun.down()
    receiver.stop()
Beispiel #4
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-s', '--source-addr', default='10.8.0.1')
    parser.add_argument('-d', '--dest-addr', default='10.8.0.2')
    parser.add_argument('-m', '--netmask', default='255.255.255.0')
    parser.add_argument('-l', '--mtu', default=1500, type=int)
    args = parser.parse_args()

    tun = TunTapDevice()
    try:
        tun.addr = args.source_addr
        tun.dstaddr = args.dest_addr
        tun.netmask = args.netmask
        tun.mtu = args.mtu
        while True:
            buf = tun.read(tun.mtu)
            print(buf)
            tun.write(buf)
    finally:
        tun.close()
Beispiel #5
0
import getopt, struct
from scapy.all import *

from pytun import TunTapDevice, IFF_TUN, IFF_NO_PI


def change_dst_ip(packet, new_ip):
    new_packet = packet.copy()
    new_packet[IP].dst = new_ip
    return new_packet


tun0 = TunTapDevice(name='tun0', flags=IFF_TUN + IFF_NO_PI)
#'127.0.0.1'
tun0.addr = '10.1.8.82'
tun0.dstaddr = '10.1.8.83'
tun0.netmask = '255.255.255.0'
tun0.mtu = 1500

ip = IP(src="192.168.1.2", dst="192.168.1.1")
udp = UDP(sport=4444, dport=4444)
payload = Raw(load="Hi! I'm UDP-packet")

packet = ip / udp / payload

packet.show()

new_packet = change_dst_ip(packet, "192.168.1.3")

new_packet.show()
Beispiel #6
0
import os
import socket
import threading
import sys
import pytun
from pytun import TunTapDevice

try:
    import uvloop
except ImportError:
    uvloop = None

COUNT = 0
tun = TunTapDevice(name="mytun_serv", flags=pytun.IFF_TUN | pytun.IFF_NO_PI)
tun.addr = "10.10.10.2"
tun.dstaddr = "10.10.10.1"
tun.netmask = "255.255.255.0"
tun.mtu = 1048
tun.persist(True)
tun.up()
STREAM_ID = 100


class VPNServerProtocol(QuicConnectionProtocol):

    # -00 specifies 'dq', 'doq', and 'doq-h00' (the latter obviously tying to
    # the version of the draft it matches). This is confusing, so we'll just
    # support them all, until future drafts define conflicting behaviour.
    SUPPORTED_ALPNS = ["dq", "doq", "doq-h00"]

    def __init__(self, *args, **kwargs):
Beispiel #7
0
from pytun import TunTapDevice

tun = TunTapDevice(name='mytun')
print(tun.name)
tun.addr = '192.168.137.1'
tun.dstaddr = '192.168.137.10'
tun.netmask = '255.255.255.255'
tun.mtu = 1500
tap.hwaddr = '\x00\x11\x22\x33\x44\x55'
print(tap.hwaddr)
tun.persists(True)
tun.up()
buf = tun.read(tun.mtu)
tun.write(buf)
tun.close()
Beispiel #8
0
    exit(1)

# Print username
username = unicode(contacts[i]['print_name'])
peer_id = contacts[i]['peer_id']
print 'Connecting to partner: ' + username

# Create TUN device for network capture and injections
tun = TunTapDevice(name='teletun-device')

print tun.name + ' has been created, information follows:'

# Set IP address based on --server flag
if '--server' in sys.argv:
    tun.addr = '10.8.0.1'
    tun.dstaddr = '10.8.0.2'
else:
    tun.addr = '10.8.0.2'
    tun.dstaddr = '10.8.0.1'

tun.netmask = '255.255.255.0'
tun.mtu = 1500

print 'Address: ' + tun.addr
print 'Dest.-Address: ' + tun.dstaddr
print 'Netmask: ' + tun.netmask
print 'MTU: ' + str(tun.mtu)

# Start TUN device
tun.up()
up = True
Beispiel #9
0
from pytun import TunTapDevice, IFF_NO_PI, IFF_TUN

tun = TunTapDevice(name="tun", flags=(IFF_TUN | IFF_NO_PI))
tun.addr = '192.168.13.10'
tun.dstaddr = '192.168.13.1'
tun.netmask = '255.255.255.0'
tun.persist(True)
tun.mtu = 1500
buf = tun.read(tun.mtu)
tun.write(buf)
Beispiel #10
0
#!/usr/bin/python
from pytun import TunTapDevice
from select import select
import time

tun1 = TunTapDevice()
tun2 = TunTapDevice()

print "Name %s" % tun1.name
tun1.addr = '10.8.0.1'
tun1.dstaddr = '10.8.0.2'
tun1.netmask = '255.255.255.0'
tun1.mtu = 1500
tun1.up()

print "Name %s" % tun2.name
tun2.addr = '10.8.0.2'
tun2.dstaddr = '10.8.0.1'
tun2.netmask = '255.255.255.0'
tun2.mtu = 1500
tun2.up()

while True:
    r = select([tun1, tun2], [], [])[0][0]
    try:
        buf = r.read(r.mtu)
        if r == tun1:
            read = tun1.name
            tun2.write("Hi tun1!")
        else:
            read = tun2.name
Beispiel #11
0
        return pkt
    elif proto == 6:
        parsetcp(payload)
        return None
    elif proto == 17:
        parseudp(payload)
        return None


def parse6(pkt):
    return None


tun = TunTapDevice()
tun.addr = '192.168.210.1'
tun.dstaddr = '192.168.210.2'
tun.netmask = '255.255.255.252'
tun.mtu = 1500
tun.up()

while True:
    buf = tun.read(tun.mtu)
    # pkt = ["%.2x "%c for c in list(buf)]
    pkt = list(buf)
    ethertype = pkt[2] << 8 | pkt[3]
    flags = pkt[0] << 8 | pkt[1]
    payload = pkt[4:]
    if ethertype == 0x0800:
        print("Got IPv4 packet")
        ret = parse4(payload)
        if ret is not None:
Beispiel #12
0
    log("Debug mode entered.")
else:
    debug = lambda x: None

# ---------- config crypto functions

crypto = Crypto(args.key)
encrypt, decrypt = crypto.encrypt, crypto.decrypt

# ---------- config TUN device

tun = TunTapDevice()
if "client" == args.role:
    log("Running as client.")
    tun.addr = args.client_ip  #"10.1.0.2"
    tun.dstaddr = args.server_ip  #"10.1.0.1"
else:
    log("Running as server.")
    tun.addr = args.server_ip  #"10.1.0.1"
    tun.dstaddr = args.client_ip  #"10.1.0.2"
tun.netmask = "255.255.255.0"
tun.mtu = MTU
log(\
    """%s: mtu %d  addr %s  netmask %s  dstaddr %s""" % \
    (tun.name, tun.mtu, tun.addr, tun.netmask, tun.dstaddr)
    )
tun.up()
log("%s: up now." % tun.name)

# ---------- open UDP sockets
Beispiel #13
0
    log("Debug mode entered.")
else:
    debug = lambda x: None

# ---------- config crypto functions

crypto = Crypto(args.key)
encrypt, decrypt = crypto.encrypt, crypto.decrypt

# ---------- config TUN device

tun = TunTapDevice()
if "client" == args.role:
    log("Running as client.")
    tun.addr = args.client_ip #"10.1.0.2"
    tun.dstaddr = args.server_ip #"10.1.0.1"
else:
    log("Running as server.")
    tun.addr = args.server_ip #"10.1.0.1"
    tun.dstaddr = args.client_ip #"10.1.0.2"
tun.netmask = "255.255.255.0"
tun.mtu = MTU
log(\
    """%s: mtu %d  addr %s  netmask %s  dstaddr %s""" % \
    (tun.name, tun.mtu, tun.addr, tun.netmask, tun.dstaddr)
)
tun.up()
log("%s: up now." % tun.name)

# ---------- open UDP sockets
Beispiel #14
0
from pytun import TunTapDevice
import discord
from discord.ext import tasks, commands

from threading import Thread
import os

import logging

from buffer import Buffer

logging.basicConfig(level=logging.INFO)

tun = TunTapDevice(name='discip')
tun.addr = os.environ['SRC_IP']
tun.dstaddr = os.environ['DST_IP']
tun.netmask = '255.255.255.0'
tun.mtu = 1500
tun.persist(True)
tun.up()


def terminate():
    tun.down()


signal.signal(signal.SIGINT, terminate)

TOKEN = os.environ["DISCORD_TOKEN"]

bot = discord.ext.commands.Bot('!')