Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
P
pcap-anonymize
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Conditions générales et politique de confidentialité
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
smart-home-network-security
pcap-anonymize
Validations
0419927d
Valider
0419927d
rédigé
Il y a 5 mois
par
François De Keersmaeker
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Started anonymizing hardware addresses in DHCP packets
parent
99eab512
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline
#60247
en échec
Il y a 5 mois
Étape : test
Modifications
2
Pipelines
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
pcap_anonymize/layers/mac.py
+33
-7
33 ajouts, 7 suppressions
pcap_anonymize/layers/mac.py
pcap_anonymize/pcap_anonymize.py
+8
-1
8 ajouts, 1 suppression
pcap_anonymize/pcap_anonymize.py
avec
41 ajouts
et
8 suppressions
pcap_anonymize/layers/mac.py
+
33
−
7
Voir le fichier @
0419927d
...
@@ -4,11 +4,16 @@ Anonymize MAC addresses.
...
@@ -4,11 +4,16 @@ Anonymize MAC addresses.
from
hashlib
import
sha256
from
hashlib
import
sha256
from
scapy.layers.l2
import
Ether
,
ARP
from
scapy.layers.l2
import
Ether
,
ARP
from
scapy.layers.dhcp
import
DHCP
from
scapy.layers.dhcp
import
BOOTP
,
DHCP
BASE_HEX
=
16
BASE_HEX
=
16
BYTE_ORDER
=
"
big
"
BYTE_ORDER
=
"
big
"
# DHCP-related constants
DHCP_MAGIC_COOKIE
=
0x63825363
DHCP_OPTION_CLIENT_ID
=
"
client_id
"
DHCP_CLIENT_ID_TYPE_ETH
=
1
# Special, well-known MAC addresses
# Special, well-known MAC addresses
special_macs
=
[
special_macs
=
[
"
00:00:00:00:00:00
"
,
# Default
"
00:00:00:00:00:00
"
,
# Default
...
@@ -137,15 +142,36 @@ def anonymize_arp(arp: ARP) -> ARP:
...
@@ -137,15 +142,36 @@ def anonymize_arp(arp: ARP) -> ARP:
return
arp
return
arp
def
anonymize_dhcp
(
dhcp
:
DHC
P
)
->
DHC
P
:
def
anonymize_dhcp
(
dhcp
:
BOOT
P
)
->
BOOT
P
:
"""
"""
Anonymize a packet
'
s DHCP layer.
Anonymize a packet
'
s DHCP layer
MAC addresses
.
Args:
Args:
dhcp (scapy.
DHC
P): DHCP layer to anonymize
dhcp (scapy.
BOOT
P): DHCP layer to anonymize
Returns:
Returns:
scapy.
DHC
P: anonymized DHCP layer
scapy.
BOOT
P: anonymized DHCP layer
"""
"""
# Anonymize client MAC address
# Anonymize client hardware address
dhcp
.
setfieldval
(
"
chaddr
"
,
anonymize_mac
(
dhcp
.
getfieldval
(
"
chaddr
"
)))
chaddr
=
dhcp
.
getfieldval
(
"
chaddr
"
)[
0
:
6
]
dhcp
.
setfieldval
(
"
chaddr
"
,
anonymize_mac
(
chaddr
))
# Check if BOOTP layer contains DHCP options
options
=
dhcp
.
getfieldval
(
"
options
"
)
cookie
=
int
.
from_bytes
(
options
[:
4
],
BYTE_ORDER
)
if
cookie
!=
DHCP_MAGIC_COOKIE
:
return
dhcp
# BOOTP layer contains DHCP options
# Anonymize Client Identifier option
dhcp
=
dhcp
.
getlayer
(
DHCP
)
if
dhcp
is
None
or
dhcp
.
options
is
None
:
return
dhcp
for
i
,
(
code
,
value
)
in
enumerate
(
dhcp
.
options
):
if
code
==
DHCP_OPTION_CLIENT_ID
and
value
[
0
]
==
DHCP_CLIENT_ID_TYPE_ETH
:
mac
=
"
:
"
.
join
(
f
"
{
byte
:
02
x
}
"
for
byte
in
value
[
1
:
7
])
dhcp
.
options
[
i
]
=
(
code
,
anonymize_mac
(
mac
))
break
return
dhcp
return
dhcp
Ce diff est replié.
Cliquez pour l'agrandir.
pcap_anonymize/pcap_anonymize.py
+
8
−
1
Voir le fichier @
0419927d
...
@@ -6,8 +6,9 @@ import os
...
@@ -6,8 +6,9 @@ import os
from
pathlib
import
Path
from
pathlib
import
Path
from
scapy.all
import
Packet
,
sniff
,
wrpcap
from
scapy.all
import
Packet
,
sniff
,
wrpcap
from
scapy.layers.l2
import
Ether
,
ARP
from
scapy.layers.l2
import
Ether
,
ARP
from
scapy.layers.dhcp
import
BOOTP
# Packet layers
# Packet layers
from
.layers.mac
import
anonymize_ether
,
anonymize_arp
from
.layers.mac
import
anonymize_ether
,
anonymize_arp
,
anonymize_dhcp
### GLOBAL VARIABLES ###
### GLOBAL VARIABLES ###
...
@@ -59,6 +60,12 @@ def anonymize_packet(packet: Packet) -> None:
...
@@ -59,6 +60,12 @@ def anonymize_packet(packet: Packet) -> None:
except
AttributeError
:
except
AttributeError
:
pass
pass
# Anonymize MAC addresses in DHCP packets
try
:
anonymize_dhcp
(
packet
.
getlayer
(
BOOTP
))
except
AttributeError
:
pass
# Recompute packet checksums
# Recompute packet checksums
packet
=
recompute_checksums
(
packet
)
packet
=
recompute_checksums
(
packet
)
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter