Exemple #1
0
    def __init__(self, fname, fid=None, signer=None,
                 create_if_notexisting=False):
        self.fname = fname
        self.fid = fid
        self.signer = signer
        self.cine = create_if_notexisting

        self.seq = 0
        self.pcap = pcap.PCAP(fname)
        self.hprev = None
        try:
            self.pcap.open('r')
            # find highest seq number:
            w = self.pcap.read_backwards(True)
            e = event.EVENT()
            e.from_wire(w)
            if fid != None and e.fid != fid:
                print("feed ID mismatch:", e.fid, "instead of", fid)
                self.pcap.close()
                self.pcap = None
                return
            self.fid, self.seq = e.fid, e.seq
            self.hprev = event.get_hash(e.metabits)
            self.pcap.close()
        except Exception as e:
            if not self.cine:
                self.pcap = None
                print(f"error opening file {fname}")
            else:
                self.pcap.open('w')
                self.pcap.close()
Exemple #2
0
 def write(self, c): # create new log extension with given content
     if self.seq == 0:
         self.hprev = None
     e = event.EVENT(fid=self.fid, seq=self.seq+1,
                     hprev=self.hprev, content=c)
     metabits = e.get_metabits(self.signer.get_sinfo())
     signature = self.signer.sign(metabits)
     w = e.to_wire(signature)
     self._append(w)
     self.hprev = event.get_hash(metabits)
     return w
 def f_read(self,pcapfile,fid,signer):
     f = FEED(pcapfile, fid, signer)
     f.seq = 0
     f.hprev = None
     print("Checking feed " + str(fid))
     for e in f:
         if not f.is_valid_extension(e):
             print("-> event " + str(f.seq+1) + ": chaining or signature problem")
         else:
             print("-> event " + str(e.seq) + ": ok, content= " + str(e.content()))
         f.seq += 1
         f.hprev = event.get_hash(e.metabits)
     return f
Exemple #4
0
 def ingest(self, e): # append event to log only if a valid extension
     # return False if failing
     try:
         if not self.is_valid_extension(e):
             print("   invalid extension")
             return False
         self._append(e.to_wire())
         self.hprev = event.get_hash(e.metabits)
         return True
     except Exception as x:
         print(x)
         pass
     print("   invalid packet")
     return False
    def get_feed_content(self, fid):
        # reads content from log and returns feed
        if fid == self.sensor_feed.fid:
            f = self.sensor_feed
        elif fid == self.control_feed.fid:
            f = self.control_feed

        f.seq = 0
        f.hprev = None
        for e in f:
            if not f.is_valid_extension(e):
                print("-> event " + str(f.seq+1) + ": chaining or signature problem")
            else:
                print("-> event " + str(e.seq) + ": ok, content= " + str(e.content()))
            f.seq += 1
            f.hprev = event.get_hash(e.metabits)

        return f
 def get_event_seq(self, fid, nr):
     if fid == self.sensor_feed.fid:
         f = self.sensor_feed
     elif fid == self.control_feed.fid:
         f = self.control_feed
     nr_now = 0
     seq = ''
     f.seq = 0
     f.hprev = None
     for e in f:
         if not f.is_valid_extension(e):
             print("-> event " + str(f.seq+1) + ": chaining or signature problem")
         else:
             if nr_now == nr:
                 e_now = str(e.content())
         nr_now += 1
         f.seq += 1
         f.hprev = event.get_hash(e.metabits)
     return e_now
Exemple #7
0
 def get_event_content_list(self, fid, nr):
     # reads one event from log
     if fid == self.sensor_feed.fid:
         f = self.sensor_feed
     elif fid == self.control_feed.fid:
         f = self.control_feed
     nr_now = 0
     e_now = ''
     f.seq = 0
     f.hprev = None
     for e in f:
         if not f.is_valid_extension(e):
             print("-> event " + str(f.seq+1) + ": chaining or signature problem")
         else:
             e_now += str(e.content()) + '\n'
         nr_now += 1
         f.seq += 1
         f.hprev = event.get_hash(e.metabits)
     return e_now
Exemple #8
0
from logStore.transconn.database_connector import  DatabaseConnector
import cbor2
import event



dc = DatabaseConnector()

feed_ids = dc.get_all_feed_ids()
n = dc.get_current_seq_no(feed_ids[1])
print("seq num:", n, "(feed 1)")
tmp = 0
for i in range(0, n + 1):
    l = cbor2.loads(dc.get_event(feed_ids[1], i))
    tmp = cbor2.dumps(l)
    print(cbor2.loads(l[0])) # content bits
    # print(l[1])
    ev = cbor2.loads(l[2])
    ev = str(ev[0]).split("/")
    print(ev[0]) # event
    print(event.get_hash(l[0]))
    print("-------------------")

            pcap.get_all_info(args.pcapfile1)
        print('-----------------------------')
        print('-----------------------------')
        if args.pcapfile2 is not None:
            pcap.get_all_info(args.pcapfile2)

    elif args.CMD == 'sync':
        print("Synchronisation...")
        Sync(args.pcapfile1, args.pcapfile2).sync_files()

    elif args.CMD == 'check':
        if args.keyfile1 is not None:
            fid, signer = load_keyfile(args.keyfile1)
        else:
            fid, signer = None, None

        f = FEED(args.pcapfile1, fid=fid, signer=signer)
        if f.pcap is None:
            sys.exit()
        f.seq = 0
        f.hprev = None
        print(f"Checking feed {f.fid.hex()}")
        for e in f:
            print(e.content())
            if not f.is_valid_extension(e):
                print(f"-> event {f.seq + 1}: chaining or signature problem")
            else:
                print(f"-> event {e.seq}: ok, content={e.content()}")
            f.seq += 1
            f.hprev = event.get_hash(e.metabits)