Question
[Résolu]Question sur une suppression de caractére
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 2 mois #28337
par dimshell
[Résolu]Question sur une suppression de caractére a été créé par dimshell
Bonjour,
je suis bloqué pour supprimer une ligne d'un fichier.
fichier de sortie de base:
IP;55043;IP;389
IP;389;IP;55043
IP;55043;IP;389
;bad-len;;
[code:1]# Permets de lister les cartes réseau connectées
$eth=@(C:\Users\svc_portscan\Desktop\Windump.exe -ArgumentList -D)
#$eth = Invoke-Expression \"$env:USERPROFILE\Desktop\Windump.exe -ArgumentList -D\"
# Parcours les cartes et si il y a intel dedans stock le premier caractére donc le numéro de la carte pour notre commande Windump de la varaible $argum
foreach($item in $eth){
if ($item -match 'intel'){
$newitem =$item.Substring(0,1)
}
else{
$newitem=1
}
}
# Variable contenant des variables d'environnementspour le chemin d'accès au différents fichiers
$path=\"$($env:USERPROFILE)\Documents\"
$pathexec=\"$($env:USERPROFILE)\Desktop\"
# Commande WinDump
$argum=\"-i $newitem -q -n -t -c 500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Windump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\WindumpTri.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $pathexec\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
$dump | foreach {
$_.ipsrc = $_.ipsrc -replace \"bad-len\",\"\"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\WindumpNetcare.csv \";\" -NoTypeInformation
[/code:1]
fichier de sortie après l'exe du script
IP;55043;IP;389
IP;389;IP;55043
IP;55043;IP;389
;;;
fichier voulu :
IP;55043;IP;389
IP;389;IP;55043
IP;55043;IP;389
Merci pour vos réponses.
j'ai essayé sous plusieurs façon mais rien de concluant.
Message édité par: dimshell, à: 26/02/19 08:26
Message édité par: Arnaud, à: 26/02/19 14:08<br><br>Message édité par: dimshell, à: 26/02/19 14:31
je suis bloqué pour supprimer une ligne d'un fichier.
fichier de sortie de base:
IP;55043;IP;389
IP;389;IP;55043
IP;55043;IP;389
;bad-len;;
[code:1]# Permets de lister les cartes réseau connectées
$eth=@(C:\Users\svc_portscan\Desktop\Windump.exe -ArgumentList -D)
#$eth = Invoke-Expression \"$env:USERPROFILE\Desktop\Windump.exe -ArgumentList -D\"
# Parcours les cartes et si il y a intel dedans stock le premier caractére donc le numéro de la carte pour notre commande Windump de la varaible $argum
foreach($item in $eth){
if ($item -match 'intel'){
$newitem =$item.Substring(0,1)
}
else{
$newitem=1
}
}
# Variable contenant des variables d'environnementspour le chemin d'accès au différents fichiers
$path=\"$($env:USERPROFILE)\Documents\"
$pathexec=\"$($env:USERPROFILE)\Desktop\"
# Commande WinDump
$argum=\"-i $newitem -q -n -t -c 500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Windump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\WindumpTri.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $pathexec\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
$dump | foreach {
$_.ipsrc = $_.ipsrc -replace \"bad-len\",\"\"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\WindumpNetcare.csv \";\" -NoTypeInformation
[/code:1]
fichier de sortie après l'exe du script
IP;55043;IP;389
IP;389;IP;55043
IP;55043;IP;389
;;;
fichier voulu :
IP;55043;IP;389
IP;389;IP;55043
IP;55043;IP;389
Merci pour vos réponses.
j'ai essayé sous plusieurs façon mais rien de concluant.
Message édité par: dimshell, à: 26/02/19 08:26
Message édité par: Arnaud, à: 26/02/19 14:08<br><br>Message édité par: dimshell, à: 26/02/19 14:31
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
il y a 7 ans 2 mois #28338
par Sinjk
Réponse de Sinjk sur le sujet Re:Question sur une suppression de caractére
Salut, je t'avoue que je n'ai pas lu ton script mais pour récupérer seulement les valeurs voulues, si celle-ci sont dans un fichier texte par exemple, j'utilise:
[code:1]
get-content \"cheminverstonfichier\ip.txt\" |select-string -pattern \"IP\"
[/code:1]
Le pattern ne selectionne que les lignes qui commence par \"IP\" (si je comprends bien, les lignes que tu veux récupérer contiennent \"IP\")
En espérant que cette petite piste puisse t'aider.
Bon courage<br><br>Message édité par: Sinjk, à: 26/02/19 09:08
[code:1]
get-content \"cheminverstonfichier\ip.txt\" |select-string -pattern \"IP\"
[/code:1]
Le pattern ne selectionne que les lignes qui commence par \"IP\" (si je comprends bien, les lignes que tu veux récupérer contiennent \"IP\")
En espérant que cette petite piste puisse t'aider.
Bon courage<br><br>Message édité par: Sinjk, à: 26/02/19 09:08
Connexion ou Créer un compte pour participer à la conversation.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 2 mois #28341
par dimshell
Réponse de dimshell sur le sujet Re:Question sur une suppression de caractére
Merci pour ta réponse,
IP = une adresse IP
mais la mauvaise ligne aussi commence par IP
fichier contenant le résultat du Windump
IP x.x.x.x.58209 > x.x.x.x.389: tcp 0
IP bad-len 0
IP x.x.x.x.389 > x.x.x.x.58209: tcp 0<br><br>Message édité par: dimshell, à: 26/02/19 10:20
IP = une adresse IP
mais la mauvaise ligne aussi commence par IP
fichier contenant le résultat du Windump
IP x.x.x.x.58209 > x.x.x.x.389: tcp 0
IP bad-len 0
IP x.x.x.x.389 > x.x.x.x.58209: tcp 0<br><br>Message édité par: dimshell, à: 26/02/19 10:20
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 7 ans 2 mois #28345
par Philippe
Réponse de Philippe sur le sujet Re:Question sur une suppression de caractére
salut dimshell
si je comprend bien tu a une ligne vide (avec que les points virgules)
les point virgule sont généré par cette ligne :
[code:1] \"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"[/code:1]
il faut donc filtrer avant les lignes vides
sur la ligne precedente tu peut essayer ceci
[code:1]$result | where {$_ -ne $null} | foreach {[/code:1]
ou ceci
[code:1]$result | where {$_.ipsrc -ne \"\"} | foreach {[/code:1]<br><br>Message édité par: 6ratgus, à: 26/02/19 11:37
si je comprend bien tu a une ligne vide (avec que les points virgules)
les point virgule sont généré par cette ligne :
[code:1] \"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"[/code:1]
il faut donc filtrer avant les lignes vides
sur la ligne precedente tu peut essayer ceci
[code:1]$result | where {$_ -ne $null} | foreach {[/code:1]
ou ceci
[code:1]$result | where {$_.ipsrc -ne \"\"} | foreach {[/code:1]<br><br>Message édité par: 6ratgus, à: 26/02/19 11:37
Connexion ou Créer un compte pour participer à la conversation.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 7 ans 2 mois #28350
par dimshell
Réponse de dimshell sur le sujet Re:Question sur une suppression de caractére
Merci pour ta réponse.
Oui je remplace bad-len par du vide et après j'ai les 3 points-virgules.
cela fonctionne
Je me prends trop la tête à faire des traitements inutile.
[code:1]# Permets de lister les cartes réseau connectées
$eth=@(C:\Users\svc_portscan\Desktop\Windump.exe -ArgumentList -D)
#$eth = Invoke-Expression \"$env:USERPROFILE\Desktop\Windump.exe -ArgumentList -D\"
# Parcours les cartes et si il y a intel dedans stock le premier caractére donc le numéro de la carte pour notre commande Windump de la varaible $argum
foreach($item in $eth){
if ($item -match 'intel'){
$newitem =$item.Substring(0,1)
}
else{
$newitem=1
}
}
# Variable contenant des variables d'environnementspour le chemin d'accès au différents fichiers
$path=\"$($env:USERPROFILE)\Documents\"
$pathexec=\"$($env:USERPROFILE)\Desktop\"
# Commande WinDump
$argum=\"-i $newitem -q -n -t -c 500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Windump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\WindumpTri.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $pathexec\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
$dump | foreach {
$_.ipsrc = $_.ipsrc -replace \"bad-len\",\"\"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | where {$_.ipsrc -ne $null}| foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\WindumpNetcare.csv \";\" -NoTypeInformation
[/code:1]
Message édité par: dimshell, à: 26/02/19 13:57<br><br>Message édité par: dimshell, à: 26/02/19 14:02
Oui je remplace bad-len par du vide et après j'ai les 3 points-virgules.
cela fonctionne
Je me prends trop la tête à faire des traitements inutile.
[code:1]# Permets de lister les cartes réseau connectées
$eth=@(C:\Users\svc_portscan\Desktop\Windump.exe -ArgumentList -D)
#$eth = Invoke-Expression \"$env:USERPROFILE\Desktop\Windump.exe -ArgumentList -D\"
# Parcours les cartes et si il y a intel dedans stock le premier caractére donc le numéro de la carte pour notre commande Windump de la varaible $argum
foreach($item in $eth){
if ($item -match 'intel'){
$newitem =$item.Substring(0,1)
}
else{
$newitem=1
}
}
# Variable contenant des variables d'environnementspour le chemin d'accès au différents fichiers
$path=\"$($env:USERPROFILE)\Documents\"
$pathexec=\"$($env:USERPROFILE)\Desktop\"
# Commande WinDump
$argum=\"-i $newitem -q -n -t -c 500 tcp\"
# Contenant le résultat du WinDump
$fichier = \"$path\Windump.txt\"
# Contenant le résultat après modifiction de la variable $fichier
$newcontenu = \"$path\WindumpTri.txt\"
# Colonne du CSV
$Header = \"c1\",\"ipsrc\", \"portsrc\", \"ipdest\", \"portdest\", \"c6\"
# Lancement d'une application Windump.exe avec l'argument une variable contenant la commande WinDump et écrit dans le fichier fournit
$process=Start-Process $pathexec\Windump.exe -PassThru -ArgumentList $argum -RedirectStandardOutput $fichier
# Attends la fin d'execution du processus pour continuer le script
$process.WaitForExit()
# Lecture du fichier comme ci celui-ci été un CSV
$dump = Import-Csv $fichier -Header $Header -Delimiter \" \"
# Remplace après l'ip de destination le : par du vide (parcours l'ensemble des objets)
$dump | foreach {
$_.ipdest = $_.ipdest -replace \":\",\" \"
}
$dump | foreach {
$_.ipsrc = $_.ipsrc -replace \"bad-len\",\"\"
}
# Remplace via une regex les differentes colonnes (parcours l'ensemble des objets)
$result = $dump | foreach {
$portsrc = $_.ipsrc -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\",\"\"
$ipsrc = ($_.ipsrc -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$portdest = $_.ipdest -replace [regex]\"([0-9]{1,3}\.){3}[0-9]{1,3}(\.)\", \"\"
$ipdest = ($_.ipdest -split [regex]\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"«»)[1]
$_ | select @{n=\"ipsrc\";e={$ipsrc}},@{n=\"portsrc\";e={$portsrc}},@{n=\"ipdest\";e={$ipdest}},@{n=\"portdest\";e={$portdest}}
}
# écrit dans le résultat dans le fichier $newcontenu et ajoute entre l'ip dest/ source / port un ; (parcours l'ensemble des objets)
$result | where {$_.ipsrc -ne $null}| foreach {
\"$($_.ipsrc);$($_.portsrc);$($_.ipdest);$($_.portdest)\"
} | Set-Content $newcontenu
# export en CSV sans doublons
$result| select ipsrc, portsrc, ipdest, portdest -Unique | export-csv $path\WindumpNetcare.csv \";\" -NoTypeInformation
[/code:1]
Message édité par: dimshell, à: 26/02/19 13:57<br><br>Message édité par: dimshell, à: 26/02/19 14:02
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu]Question sur une suppression de caractére