Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions Modules/Grupo1/membros.mb

This file was deleted.

48 changes: 0 additions & 48 deletions Modules/Grupo1/routers/trabalho1.py

This file was deleted.

100 changes: 0 additions & 100 deletions Modules/Grupo1/views/trabalho1.html

This file was deleted.

4 changes: 3 additions & 1 deletion Modules/giulia_virginia_vitoria/membros.mb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Lista de membros do grupo

- Giulia
- Antonio Sérgio Tolio
- Guilherme Garcia
- Lucas Caetano
- Virginia
- Vitória
94 changes: 49 additions & 45 deletions Modules/giulia_virginia_vitoria/routers/trabalho1.py
Original file line number Diff line number Diff line change
@@ -1,48 +1,52 @@
from fastapi import FastAPI, File, UploadFile
from typing import List
from scapy.all import IP, rdpcap
from fastapi import APIRouter
import scapy.all as scapy

router = APIRouter(prefix="/trabalho1", tags=[""])

@router.get("/analise2")
def analise():
arquivo = './pcaps/pacotes.pcap'
pacotes = scapy.rdpcap(arquivo)

#ips
ips = []

# pega a quantidade de pacotes por protocolo
protocolos = {}
portas = {}
for pacote in pacotes:
# printa a porta do pacote
if pacote.haslayer(scapy.TCP):
portas[pacote[scapy.TCP].dport] = portas.get(pacote[scapy.TCP].dport, 0) + 1
if pacote.haslayer(scapy.UDP):
portas[pacote[scapy.UDP].dport] = portas.get(pacote[scapy.UDP].dport, 0) + 1
if pacote.haslayer(scapy.IP):
ips.append(pacote[scapy.IP].src)
if pacote[scapy.IP].proto in protocolos:
protocolos[pacote[scapy.IP].proto] += 1
else:
protocolos[pacote[scapy.IP].proto] = 1

# pega a quantidade de pacotes por ip
ips_count = {}
for ip in ips:
if ip in ips_count:
ips_count[ip] += 1
else:
ips_count[ip] = 1

# pega o tempo total da captura
tempo_total = pacotes[-1].time - pacotes[0].time
# passa para segundos
tempo_total = round(tempo_total, 2)
import uvicorn

router = APIRouter()

app = FastAPI()

class IPData:
def __init__(self, timestamp, src_ip, dst_ip, ttl, proto, length):
self.timestamp = timestamp
self.src_ip = src_ip
self.dst_ip = dst_ip
self.ttl = ttl
self.proto = proto
self.length = length

def extract_ip_info(pcap_file):
packets = rdpcap(pcap_file)
ip_packets = []

for pkt in packets:
if IP in pkt:
ip_packet = pkt[IP]
info = IPData(
timestamp=pkt.time,
src_ip=ip_packet.src,
dst_ip=ip_packet.dst,
ttl=ip_packet.ttl,
proto=ip_packet.proto,
length=ip_packet.len
)
ip_packets.append(info)

return ip_packets

# Path to your pcapng file
pcap_file_path = './pcaps/trabalho1.pcapng'
ip_packets = extract_ip_info(pcap_file_path)

@router.get("/trabalho1")
def read_trabalho1():
return {
"Protocolos": protocolos,
"IPs": ips_count,
"Portas": portas,
"Tempo total": tempo_total
}
"ip_packets": [ip.__dict__ for ip in ip_packets]
}

app.include_router(router)

if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=3001) # Porta para o backend
55 changes: 55 additions & 0 deletions Modules/giulia_virginia_vitoria/routers/trabalho2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
from fastapi import FastAPI, File, UploadFile
from typing import List
from scapy.all import ARP, rdpcap
from fastapi import APIRouter
import uvicorn

router = APIRouter()

app = FastAPI()

class ARPData:
def __init__(self, timestamp, src_ip, dst_ip, src_mac, dst_mac, op):
self.timestamp = timestamp
self.src_ip = src_ip
self.dst_ip = dst_ip
self.src_mac = src_mac
self.dst_mac = dst_mac
self.op = op

def extract_arp_info(pcap_file):
packets = rdpcap(pcap_file)
arp_requests = []
arp_replies = []

for pkt in packets:
if ARP in pkt:
arp_packet = pkt[ARP]
info = ARPData(
timestamp=pkt.time,
src_ip=arp_packet.psrc,
dst_ip=arp_packet.pdst,
src_mac=arp_packet.hwsrc,
dst_mac=arp_packet.hwdst,
op=arp_packet.op
)
if arp_packet.op == 1: # ARP Request
arp_requests.append(info)
elif arp_packet.op == 2: # ARP Reply
arp_replies.append(info)

return arp_requests, arp_replies

arp_requests, arp_replies = extract_arp_info('././pcaps/trabalho2.pcap')

@router.get("/trabalho2")
def read_trabalho2():
return {
"requests": [arp.__dict__ for arp in arp_requests],
"replies": [arp.__dict__ for arp in arp_replies]
}

app.include_router(router)

if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=3001) # Porta para o backend
54 changes: 54 additions & 0 deletions Modules/giulia_virginia_vitoria/routers/trabalho3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import uvicorn
from fastapi import FastAPI, APIRouter
from pydantic import BaseModel
from scapy.all import rdpcap, IP, RIP
from typing import List

router = APIRouter()
app = FastAPI()

class RIPPacket(BaseModel):
number: int
time: float
source: str
destination: str
protocol: str
length: int
info: str

def extract_rip_packets(pcap_file):
packets = rdpcap(pcap_file)
rip_packets = []

for i, pkt in enumerate(packets):
if RIP in pkt:
rip_packet = pkt[RIP]
rip_data = RIPPacket(
number=i + 1,
time=pkt.time,
source=pkt[IP].src,
destination=pkt[IP].dst,
protocol="RIP",
length=len(pkt),
info="RIP Packet"
)
rip_packets.append(rip_data)

print(f"Extracted {len(rip_packets)} RIP packets")
return rip_packets

# Caminho para o arquivo pcap trabalho3 (assumindo conversão para .pcap)
pcap_file_path = './pcaps/trabalho3.pcap'

# Chama a função extract_rip_packets com o arquivo pcap desejado
rip_packets = extract_rip_packets(pcap_file_path)

@router.get("/trabalho3", response_model=List[RIPPacket])
def read_trabalho3():
global rip_packets
return rip_packets

app.include_router(router)

if __name__ == "__main__":
uvicorn.run(app, host="localhost", port=3001)
Loading