Pages : 1
#1 Le 08/07/2015, à 19:31
- bud93
script pour debutants
Bonjour,
En gros j’ai un fichier csv sous cette forme
A
1
B: 2
A
3
B: 7
et je voudrais que ces données soient dans un nouveau fichier sous cette forme
A,B
1,2
3,7
merci!
Hors ligne
#2 Le 08/07/2015, à 19:56
- pingouinux
Re : script pour debutants
Bonsoir,
Peux-tu préciser ce que tu veux exactement, ou donner un exemple plus long ?
Hors ligne
#3 Le 08/07/2015, à 20:02
- bud93
Re : script pour debutants
Je voudrais faire un nouveau fichier a partir d'un fichier source qui contient des valeurs. Mon vrai besoin c'est exploiter un report de scan nessus. Mon fichier de scan a cette structure
Numero de serie
12345677889
chiffrement du certif : SHA256
Numero de serie
23345677889
chiffrement du certif : SHA1
Numero de serie
26545677889
chiffrement du certif : SHA1
....
et je voudrais mettre ces infos dans un fichier mieux structurer pour faire des stats dans excel. Idealement je voudrais obtenir un fichier de la forme
Numero de serie,chiffrement du certif
12345677889,SHA256
23345677889,SHA1
26545677889,SHA1
Hors ligne
#4 Le 08/07/2015, à 20:47
- bud93
Re : script pour debutants
Vous pensez que c'est possible?
Hors ligne
#5 Le 08/07/2015, à 21:03
- pingouinux
Re : script pour debutants
Essaye ceci (ce n'est pas très joli…) :
awk -F": " 'BEGIN{s="Numero de serie,chiffrement du certif"} /^$/{next} /Numero/{getline;s=sprintf("%s\n%s",s,$1)} /chiffrement/{s=sprintf("%s,%s",s,$2)} END{print s}' le_fichier
Hors ligne
#6 Le 08/07/2015, à 21:06
- bud93
Re : script pour debutants
je specifie ou mes données sources?
Hors ligne
#7 Le 08/07/2015, à 21:11
- pingouinux
Re : script pour debutants
je specifie ou mes données sources?
À la fin de la commande, tu remplaces le_fichier par le nom de ton fichier.
Hors ligne
#8 Le 08/07/2015, à 21:21
- bud93
Re : script pour debutants
J'obtiens ca:
Numero de serie,chiffrement du certif
12345677889\,SHA256\
23345677889\,SHA1\
26545677889\,SHA1\
c'est quoi les slash?
suis sur mac
Si je veux recuperer d'autres informations, ta ligne de commande est facilement adaptable?
C'est top!
Hors ligne
#9 Le 08/07/2015, à 21:30
- pingouinux
Re : script pour debutants
c'est quoi les slash?
suis sur mac
Ils n'apparaissent pas chez moi. Essaye à tout hasard cette commande (j'ai remplacé \n par \r), mais je ne suis pas très sûr du résultat :
awk -F": " 'BEGIN{s="Numero de serie,chiffrement du certif"} /^$/{next} /Numero/{getline;s=sprintf("%s\r%s",s,$1)} /chiffrement/{s=sprintf("%s,%s",s,$2)} END{print s}' le_fichier
Si je veux recuperer d'autres informations, ta ligne de commande est facilement adaptable?
Ce sera plus ou moins facile selon ce que tu veux changer.
Hors ligne
#10 Le 08/07/2015, à 21:36
- bud93
Re : script pour debutants
En gros y a d'autres champs a recuperer. Mais cela a à peu pres la meme structure que ce que j'ai posté.
Numero de serie
12345677889
chiffrement du certif : SHA256
autre info : azerty
Numero de serie
23345677889
chiffrement du certif : SHA1
autre info : azyujzgdhg
Numero de serie
26545677889
chiffrement du certif : SHA1
autre info : azerdcdsc
Hors ligne
#11 Le 08/07/2015, à 21:49
- bud93
Re : script pour debutants
Je l'ai modifié pour prendre la 3eme info mais ca ne marche pas
awk -F": " 'BEGIN{s=« Numero de serie,chiffrement du certif,autre info » } /^$/{next} /Numero/{getline;s=sprintf("%s\n%s",s,$1)} /chiffrement/{s=sprintf("%s,%s",s,$2)} /autre/{s=sprintf("%s,%s",s,$3)} END{print s}' source2.rtf
Hors ligne
#12 Le 08/07/2015, à 21:52
- pingouinux
Re : script pour debutants
Dans ce cas, on peut faire autrement. Voici un script en python3 :
#!/usr/bin/env python3
import sys, re
with open(sys.argv[1],'r') as f: fic=f.read()
n=0
cles=[]; valeurs=[]
for k in re.split('[\n:]',fic):
if not k: continue
n+=1
if n%2:
cle=k.strip()
else:
val=k.strip()
try: i=cles.index(cle); valeurs[i].append(val)
except ValueError: cles.append(cle); valeurs.append([val])
print(','.join(cles))
for vals in zip(*valeurs): print(','.join(vals))
À lancer ainsi :
./le_script.py le_fichier
Édité : Simplification du script
Dernière modification par pingouinux (Le 09/07/2015, à 05:25)
Hors ligne
#13 Le 08/07/2015, à 21:57
- pingouinux
Re : script pour debutants
Dans ta commande en #11, il te suffit de remplacer $3 par $2 (c'est un numéro de champ sur la ligne)
Hors ligne
#14 Le 08/07/2015, à 21:58
- bud93
Re : script pour debutants
Je l'ai modifié avec
awk -F": " 'BEGIN{s="Numero de serie,chiffrement du certif,autre info"} /^$/{next} /Numero/{getline;s=sprintf("%s\n%s",s,$1)} /chiffrement/{s=sprintf("%s,%s",s,$2)} /autre/{s=sprintf("%s,%s",s,$2)} END{print s}' source2.rtf
et ca marche.
Par contre lorsque la valeur de autre info je la mets a la ligne, la valeur de autre info ne ressort pas dans le resultat final (sais tu pourquoi?)
J'essaierais le python au boulot demain
Hors ligne
#15 Le 08/07/2015, à 22:11
- pingouinux
Re : script pour debutants
Par contre lorsque la valeur de autre info je la mets a la ligne, la valeur de autre info ne ressort pas dans le resultat final (sais tu pourquoi?)
Oui, parce que la ligne de commande a été adaptée à la structure supposée du fichier (autre info : valeur). Le script python est plus général (les mots-clés n'y figurent même pas), et devrait être correct.
Ajouté : J'ai simplifié le script en #12
Dernière modification par pingouinux (Le 09/07/2015, à 05:26)
Hors ligne
#16 Le 09/07/2015, à 09:54
- bud93
Re : script pour debutants
J'ai pu le faire sur certains champs mais comme tu me l'as dit c'est un peu plus compliqué sur ce que j'ai a faire:(
Voici mes données en entrée anonymisées:
Source File: traceroute.nasl","It was possible to obtain traceroute information.","Makes a traceroute to the remote host.","n/a","","None","","","","","","","","Jan 27, 2015 11:52:16 UTC","Apr 27, 2015 15:01:53 UTC","N/A","N/A","Nov 27, 1999 12:00:00 UTC","Apr 11, 2013 12:00:00 UTC","","","remote","1.62"
10863,"SSL Certificate Information","General","Info","73.73.73.73","TCP","443","No","","Internet","","","","Synopsis: This plugin displays the SSL certificate.
Description: This plugin connects to every SSL-related port and attempts to extract and dump the X.509 certificate.
Solution: n/a
Risk Factor: None
Plugin Output: Subject Name:
1.3.6.11.14.1.11.60.2.1.3: US
1.3.1.4.1.311.60.2.1.2: Delaware
2.5.5.1.15: Private Organization
2.5.4.3.5: 2183351
Country: Country1
Postal Code: 6541
State/Province: Province
Locality: Ville
Street: 5 Jackson street
Organization: Organization1
Organization Unit: Organization Unit1
Common Name: Common Name.com
Issuer Name:
Country: Country2
Organization: Organization 2
Organization Unit: Organization Unit 2 3
Common Name: Common Name 2 12
Serial Number: 54 77 32 43 11 7F 55 55 55 0B 12 2C E4 75 OC 01
Version: 3
Signature Algorithm: SHA-256 With RSA Encryption
Not Valid Before: Feb 13 00:00:00 2011 GMT
Not Valid After: Feb 13 23:59:59 2018 GMT
Public Key Info:
Algorithm: RSA Encryption
Key Length: 2048 bits
Public Key: 22 A4 0F 44 C5 D5 A5 FF F3 1C 2F 94 DB C5 50 1A 40 C7 0B 5B
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
F2 63 30 78 09 13 47 55 CD 19 AE CA C0 14 F4 10 64 37 CE 1E
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
F6 CD 9E 3E C6 0D 4E E2 62 2A 5E E5 88 36 9A 66 63
Exponent: 01 11 01
Signature Length: 256 bytes / 2048 bits
Signature: 00 43 C5 23 B9 78 5F C0 AD 78 61 8A 90 47 EE 29 E9 1F 15 5D
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
93 B6 98 FD A9 31 E7 73 EB F6 98 B4 0B 6A 85 02 E1
Extension: Subject Alternative Name (x.x.x.x)
Critical: 0
DNS: DN1.com
Extension: Basic Constraints (x.x.x.x)
Critical: 0
Extension: Key Usage (x.x.x.x)
Critical: 1
Key Usage: Digital Signature, Key Encipherment
Extension: Extended Key Usage (x.x.x.x.x)
Critical: 0
Purpose#1: Web Server Authentication (x.x.x.x.x.x.x)
Purpose#2: Web Client Authentication (x.x.x.x.x.x.x)
Extension: Policies (x.x.x.x.x)
Critical: 0
Policy ID #1: x.x.x.x.x.x.x.x.x.x..x.x
Qualifier ID #1: Certification Practice Statement (x.x.x.x.x.xx)
CPS URI: [url]https://x.xxxx.com/xxx[/url]
Extension: Authority Key Identifier (x.x.x.x.x)
Critical: 0
Key Identifier: 01 AB AB 01 EE 22 0B 59 A6 64 63 77 CF 20 07 57 D5 91 E7 6A
Extension: CRL Distribution Points (x.x.x.x.x)
Critical: 0
URI: [url]http://xx.xxxxx.com/xx.xxx[/url]
Extension: Authority Information Access (x.x.x.x.x.xx)
Critical: 0
Method#1: Online Certificate Status Protocol
URI: [url]http://xx.xxxxx.com/xx.xxx[/url]
Method#2: Certificate Authority Issuers
URI: [url]http://xx.xxxxx.com/xx.xxx[/url]
Extension: 1.1.1.1.1.1.1.1.1.1.1
Critical: 0
Data: 04 82 01 69 01 67 00 77 00 A4 B9 09 90 B4 18 58 14 87 BB 13
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
5A CD 38 0A E1
Plugin Publication Date: 2008/05/19
Plugin Modification Date: 2012/04/02
Plugin Type: remote
Source File: traceroute.nasl","It was possible to obtain traceroute information.","Makes a traceroute to the remote host.","n/a","","None","","","","","","","","Jan 27, 2015 11:52:16 UTC","Apr 27, 2015 15:01:53 UTC","N/A","N/A","Nov 27, 1999 12:00:00 UTC","Apr 11, 2013 12:00:00 UTC","","","remote","1.62"
10863,"SSL Certificate Information","General","Info","74.74.74.74","TCP","443","No","","Internet","","","","Synopsis: This plugin displays the SSL certificate.
Description: This plugin connects to every SSL-related port and attempts to extract and dump the X.509 certificate.
Solution: n/a
Risk Factor: None
Plugin Output: Subject Name:
1.3.6.11.14.1.11.60.2.1.3: US
1.3.1.4.1.311.60.2.1.2: Delaware
2.5.5.1.15: Private Organization
2.5.4.3.5: 2183351
Country: Country1
Postal Code: 6541
State/Province: Province
Locality: Ville
Street: 5 Jackson street
Organization: Organization1
Organization Unit: Organization Unit1
Common Name: Common Name.com
Issuer Name:
Country: Country2
Organization: Organization 2
Organization Unit: Organization Unit 2 3
Common Name: Common Name 2 12
Serial Number: 54 77 32 43 11 7F 55 55 55 0B 12 2C E4 75 OC 02
Version: 3
Signature Algorithm: SHA-256 With RSA Encryption
Not Valid Before: Feb 13 00:00:00 2014 GMT
Not Valid After: Feb 13 23:59:59 2018 GMT
Public Key Info:
Algorithm: RSA Encryption
Key Length: 2048 bits
Public Key: 00 E3 0F 44 C5 D5 A5 FF F3 1C 2F 94 DB C5 50 1A 40 C7 0B 5B
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
22 0F C3 C7 CC 34 D9 E5 8E 30 69 C4 D0 A1 72 A2 1D 52 C2 70
Exponent: 01 11 01
Signature Length: 256 bytes / 2048 bits
Signature: 00 43 C5 23 B9 78 5F C0 AD 78 61 8A 90 47 EE 29 E9 1F 15 5D
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
93 B6 98 FD A9 31 E7 73 EB F6 98 B4 0B 6A 85 02 E1
Extension: Subject Alternative Name (x.x.x.x.x)
Critical: 0
DNS: x.x.com
Extension: Basic Constraints (x.x.x.x.x)
Critical: 0
Extension: Key Usage (x.x.x.x)
Critical: 1
Key Usage: Digital Signature, Key Encipherment
Extension: Extended Key Usage (x.x.x.x)
Critical: 0
Purpose#1: Web Server Authentication (x.x.x.x.x.x.x)
Purpose#2: Web Client Authentication (x.x.x.x.x.x.x.)
Extension: Policies (2.5.29.32)
Critical: 0
Policy ID #1: 2.2.2.2.2.2.2.2.2
Qualifier ID #1: Certification Practice Statement (x.x.x.x.x.x.x)
CPS URI: [url]https://x.xxxxxx.com/xxx[/url]
Extension: Authority Key Identifier (x.x.x.x)
Critical: 0
Key Identifier: 01 59 AB 01 59 AB01 59 AB01 59 AB01 59 AB01 59 AB01 59 AB
Extension: CRL Distribution Points (x.x.x.x.x)
Critical: 0
URI: [url]http://xx.xxxxxx.com/xx.xxx[/url]
Extension: Authority Information Access (1.1.1.1.1.1.1.1.)
Critical: 0
Method#1: Online Certificate Status Protocol
URI: [url]http://xx.xxxxxxx.com[/url]
Method#2: Certificate Authority Issuers
URI: [url]http://xx.xxxxxx.com/xx.crt[/url]
Extension: 1.3.3.3.3.3.3.3.3.3.3
Critical: 0
Data: 04 82 01 69 01 67 00 77 00 A4 B9 09 90 B4 18 58 14 87 BB 13
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
5A CD 38 0A E1
Plugin Publication Date: 2008/05/19
Plugin Modification Date: 2012/04/02
Plugin Type: remote
Il y a ici 2 descriptions de certificats. Penses tu que tu puisses m'aider si je te donne les infos que j'ai besoin de récupérer?
Merci!
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par cqfd93 (Le 09/07/2015, à 22:49)
Hors ligne
#17 Le 09/07/2015, à 11:52
- pingouinux
Re : script pour debutants
Dans les exemples précédents, on pouvait avoir un couple (clé,valeur) sur deux lignes consécutives, ou sur une seule ligne en les séparant par "deux-points :". C'est cette structure qu'utilise le script python en #12.
Dans ton exemple en #16, le champ valeur peut contenir des :, ou peut être réparti sur plusieurs lignes. Il faudrait connaître la structure du fichier.
D'autre part, je ne vois pas trop comment tu veux présenter le fichier obtenu, sachant que certains champs sont multi-lignes.
Hors ligne
#18 Le 09/07/2015, à 21:31
- bud93
Re : script pour debutants
Je suis desole je n'ai pas vu ta reponse.
Je ne recuperer pas les champs multilignes ma que ceux qui sont soulignés avec les valuers qu'il y a derriere. du coup c'est faisable?
10863,"SSL Certificate Information","General","Info","[u]73.73.73.73[/u]","TCP","443","No","","Internet","","","","Synopsis: This plugin displays the SSL certificate.
Description: This plugin connects to every SSL-related port and attempts to extract and dump the X.509 certificate.
Solution: n/a
Risk Factor: None
Plugin Output: Subject Name:
1.3.6.11.14.1.11.60.2.1.3: US
1.3.1.4.1.311.60.2.1.2: Delaware
2.5.5.1.15: Private Organization
2.5.4.3.5: 2183351
Country: Country1
Postal Code: 6541
State/Province: Province
Locality: Ville
Street: 5 Jackson street
Organization: Organization1
Organization Unit: Organization Unit1
[u]Common Name[/u]: Common Name.com
Issuer Name:
Country: Country2
Organization: Organization 2
Organization Unit: Organization Unit 2 3
[u]Common Name[/u]: Common Name 2 12
[u]Serial Number[/u]: 54 77 32 43 11 7F 55 55 55 0B 12 2C E4 75 OC 01
Version: 3
[u]Signature Algorithm[/u]: SHA-256 With RSA Encryption
[u]Not Valid Before[/u]: Feb 13 00:00:00 2011 GMT
[u]Not Valid After[/u]: Feb 13 23:59:59 2018 GMT
Public Key Info:
[u]Algorithm[/u]: RSA Encryption
[u]Key Length[/u]: 2048 bits
Public Key: 22 A4 0F 44 C5 D5 A5 FF F3 1C 2F 94 DB C5 50 1A 40 C7 0B 5B
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
F2 63 30 78 09 13 47 55 CD 19 AE CA C0 14 F4 10 64 37 CE 1E
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
52 64 3B 34 B0 CB 8D AB 72 1F 56 A3 86 DF C8 72 0E 32 25 F4
F6 CD 9E 3E C6 0D 4E E2 62 2A 5E E5 88 36 9A 66 63
Exponent: 01 11 01
[u]Signature Length[/u]: 256 bytes / 2048 bits
Signature: 00 43 C5 23 B9 78 5F C0 AD 78 61 8A 90 47 EE 29 E9 1F 15 5D
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
97 29 91 85 0E 24 39 5C 02 D2 5B 72 50 D7 3D C2 7E B0 4D 23
93 B6 98 FD A9 31 E7 73 EB F6 98 B4 0B 6A 85 02 E1
Extension: Subject Alternative Name (x.x.x.x)
Critical: 0
DNS: DN1.com
Extension: Basic Constraints (x.x.x.x)
Critical: 0
Extension: Key Usage (x.x.x.x)
Critical: 1
Key Usage: Digital Signature, Key Encipherment
Extension: Extended Key Usage (x.x.x.x.x)
Critical: 0
Purpose#1: Web Server Authentication (x.x.x.x.x.x.x)
Purpose#2: Web Client Authentication (x.x.x.x.x.x.x)
Extension: Policies (x.x.x.x.x)
Critical: 0
Policy ID #1: x.x.x.x.x.x.x.x.x.x..x.x
Qualifier ID #1: Certification Practice Statement (x.x.x.x.x.xx)
CPS URI: [url]https://x.xxxx.com/xxx[/url]
Extension: Authority Key Identifier (x.x.x.x.x)
Critical: 0
Key Identifier: 01 AB AB 01 EE 22 0B 59 A6 64 63 77 CF 20 07 57 D5 91 E7 6A
Extension: CRL Distribution Points (x.x.x.x.x)
Critical: 0
URI: [url]http://xx.xxxxx.com/xx.xxx[/url]
Extension: Authority Information Access (x.x.x.x.x.xx)
Critical: 0
Method#1: Online Certificate Status Protocol
URI: [url]http://xx.xxxxx.com/xx.xxx[/url]
Method#2: Certificate Authority Issuers
URI: [url]http://xx.xxxxx.com/xx.xxx[/url]
Extension: 1.1.1.1.1.1.1.1.1.1.1
Critical: 0
Data: 04 82 01 69 01 67 00 77 00 A4 B9 09 90 B4 18 58 14 87 BB 13
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
A2 CC 67 70 0A 3C 35 98 04 F9 1B DF B8 E3 77 CD 0E C8 0D DC
5A CD 38 0A E1
[u]Plugin Publication Date[/u]: 2008/05/19
[u]Plugin Modification Date[/u]: 2012/04/02
Plugin Type: remote
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par cqfd93 (Le 09/07/2015, à 22:50)
Hors ligne
#19 Le 09/07/2015, à 21:34
- bud93
Re : script pour debutants
C'est un fichier qui contient plein d'autres infos. Et je ne doit recuperer cela que lorsque il y a le tag 10863 qui indique que les infos concernent un certif ssl.
Merci
Hors ligne
#20 Le 09/07/2015, à 21:45
- pingouinux
Re : script pour debutants
C'est faisable, à condition de fournir une liste des champs à récupérer.
Il y a tout de même un problème avec 2 champs de même nom (Common Name).
Quelle est la clé, quelle est la valeur correspondant à cette partie soulignée (73.73.73.73) ?
Peut-être une partie de réponse dans le message qui vient d'arriver.
Hors ligne
#21 Le 09/07/2015, à 21:55
- bud93
Re : script pour debutants
Donc pour repondre a ta question, il faut recurperer :
l'IP du serveur 73.73.73.73
Les 2 common name si c'est possibledu subject name et issuer name
mais pas les url qui sont soulignées
Cela te suffit?
Merci
Hors ligne
#22 Le 09/07/2015, à 21:57
- bud93
Re : script pour debutants
y a un endrit ou je pourrais apprendre a manipuler grep, awk etc...?
Hors ligne
#23 Le 09/07/2015, à 22:27
- pingouinux
Re : script pour debutants
l'IP du serveur 73.73.73.73
Ça va obliger à un traitement spécial.
Les 2 common name si c'est possibledu subject name et issuer name
Pour cette clé, tu auras deux fois plus de valeurs que pour les autres. Comment alors vas-tu présenter les résultats ?
Hors ligne
#24 Le 09/07/2015, à 22:38
- bud93
Re : script pour debutants
On peut récupérer les deux valeurs ? La première sera pour sujet n'amène et l'autre pour l'isuer
Hors ligne
#25 Le 10/07/2015, à 06:13
- pingouinux
Re : script pour debutants
y a un endrit ou je pourrais apprendre a manipuler grep, awk etc...?
Tu as par exemple Guide avancé d'écriture des scripts Bash, mais tu trouveras de nombreux tutoriels dans la documentation Ubuntu ou sur internet.
La meilleure façon d'apprendre est d'écrire des scripts, et d'essayer de comprendre ceux des autres.
Pour ce qui est du problème initial, voici un script en python3 (tourne aussi en python2). Le nom du fichier lu est donné en paramètre.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys, re
# Liste des clés
choix=( '10863'
, 'Common Name'
, 'Serial Number'
, 'Signature Algorithm'
, 'Not Valid Before'
, 'Not Valid After'
, 'Algorithm'
, 'Key Length'
, 'Signature Length'
, 'Plugin Publication Date'
, 'Plugin Modification Date'
)
regex='|'.join(choix[1:])
rec=re.compile('^(%s)(,[^,]+){3},"([^"]+)|(%s) *:(.*$)'%(choix[0],regex),re.M)
# Lecture du fichier fourni en paramètre
with open(sys.argv[1],'r') as f: fic=f.read()
# cles : Liste des clés
# valeurs : Liste des listes de valeurs
cles=[]; valeurs=[]
while True:
k=rec.search(fic) # Recherche de l'expression régulière
if k:
# Traitement spécial pour la 1ère clé
if k.group(1)==choix[0]:
deja=set()
cle=k.group(1).strip()
val=k.group(3).strip()
else:
cle=k.group(4).strip()
val=k.group(5).strip()
fic=fic[k.end(0):]
try: # La clé existe déjà dans la liste
i=cles.index(cle)
# La clé est-elle en multiple exemplaire pour une série de valeurs
if cle in deja: valeurs[i][-1]+='+'+val
else: valeurs[i].append(val)
except ValueError: # La clé n'existe pas encore
cles.append(cle); valeurs.append([val])
deja.add(cle)
else: break
# Impression des valeurs
print(','.join(cles))
for vals in zip(*valeurs): print(','.join(vals))
Hors ligne
Pages : 1