Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #3976 > unrolled thread

Script Python ne fonctionne pas

Started byPebrok <nospam_pebrok1@gmail.com.invalid>
First post2022-10-04 18:18 +0000
Last post2022-10-05 11:27 +0200
Articles 4 — 3 participants

Back to article view | Back to fr.comp.lang.python


Contents

  Script Python ne fonctionne pas Pebrok <nospam_pebrok1@gmail.com.invalid> - 2022-10-04 18:18 +0000
    Re: Script Python ne fonctionne pas Olivier Miakinen <om+news@miakinen.net> - 2022-10-04 23:43 +0200
      Re: Script Python ne fonctionne pas ast <ast@invalid> - 2022-10-05 09:48 +0200
        Re: Script Python ne fonctionne pas Olivier Miakinen <om+news@miakinen.net> - 2022-10-05 11:27 +0200

#3976 — Script Python ne fonctionne pas

FromPebrok <nospam_pebrok1@gmail.com.invalid>
Date2022-10-04 18:18 +0000
SubjectScript Python ne fonctionne pas
Message-ID<ZZudndD3wtZu5aH-nZ2dnZfqlJxg4p2d@giganews.com>
Bonjour, j'ai récupéré un script Python pour convertir un fichier .json en
fichier .nfc, mais quand je le passe dans IDLE et que k'essaie de le faire
tourner, rien ne se passe.
J'ai mis tous les fichiers (script .py et fichier .json) dans le même dossier. 
C:UsersCJ78714Python>

J'essaie de vous joindre le script ci-dessous: 
#!/usr/local/bin/python3

"""
    Reads: proxmark3 MiFare json dump files
    Outputs: Flipper NFC compatable format

    nfc_prox2flip.py Gate25.json > Gate25.nfc

    Written By: Peter Shipley github.com/evilpete

    From pkg https://github.com/evilpete/flipper_toolbox
"""

import sys
import json


# Nfc device type can be UID, Mifare Ultralight, Mifare Classic, Bank card
# ATQA SAK
CARD_TYPE = {
    ("0400", "08"): "Mifare Classic",      # 1k
    ("0200", "18"): "Mifare Classic",      # 1k
    ("0400", "09"): "Mifare Mini",
    ("4400", "00"): "Mifare Ultralight",   # "NTAG213" "NTAG216"
    ("4400", "20"): "Bank card",
    ("4403", "20"): "Mifare DESFire",
}


def convert_dat(in_dat):
    """
        Take a parsed proxmark json dump arg
        returns list in Flipper NFC compatable format
    """

    # output list
    out_dat = []

    x = in_dat["Card"]

    # Guess card type by looking at ATQA/SAK combo
    j = (x['ATQA'], x['SAK'])

    t = CARD_TYPE.get(j, x['UID'])

    # this is a hack to generate Key maps
    # should add code to actually parse "SectorKeys"
    y = len(in_dat["SectorKeys"])
    s = int("1" * y, 2)
    ska = skb = f"{s:016X}"

    out_dat.append(f"""
Filetype: Flipper NFC device
Version: 2
# generated with flipper_toolbox
# Nfc device type can be UID, Mifare Ultralight, Mifare Classic, Bank card
Device type: {t}
# UID, ATQA and SAK are common for all formats
UID: {x['UID'][0:2]} {x['UID'][2:4]} {x['UID'][4:6]} {x['UID'][6:8]}
ATQA: {x['ATQA'][0:2]} {x['ATQA'][2:4]}
SAK: {x['SAK']}
# Mifare Classic specific data
Mifare Classic type: 1K
Data format version: 1
# Key map is the bit mask indicating valid key in each sector
Key A map: {ska}
Key B map: {skb}
# Mifare Classic blocks""")

    # Loop through blocks spliting data into 1 byte pieces
    for k, v in in_dat["blocks"].items():
        b = " ".join([v[i:i + 2] for i in range(0, len(v), 2)])
        out_dat.append(f"Block {k}: {b}")

    return out_dat


if __name__ == '__main__':

    in_filename = "Gate25.json"

    if len(sys.argv) > 2:
        in_filename = int(sys.argv[2])

    with open(in_filename, encoding="utf-8") as fd:
        input_dat = json.load(fd)

    output_list = convert_dat(input_dat)

    print("n".join(output_list))

    sys.exit()

[toc] | [next] | [standalone]


#3977

FromOlivier Miakinen <om+news@miakinen.net>
Date2022-10-04 23:43 +0200
Message-ID<thi9ed$7mr$1@cabale.usenet-fr.net>
In reply to#3976
Bonjour,

Le 04/10/2022 20:18, Pebrok a écrit :
> Bonjour, j'ai récupéré un script Python pour convertir un fichier .json en
> fichier .nfc, mais quand je le passe dans IDLE et que k'essaie de le faire
> tourner, rien ne se passe.
> J'ai mis tous les fichiers (script .py et fichier .json) dans le même dossier. 
> C:UsersCJ78714Python>
> 
> J'essaie de vous joindre le script ci-dessous: 
>
> [...]
> 
>     in_filename = "Gate25.json"
> 
>     if len(sys.argv) > 2:
>         in_filename = int(sys.argv[2])

Je ne connais pas IDLE, mais est-ce que tu peux lui dire que le répertoire
courant doit être C:UsersCJ78714Python> lors du lancement ?

Sinon, est-ce que tu as essayé de passer comme paramètre le chemin complet du
fichier, comme C:/UsersCJ78714Python>/Gate25.json au lieu de Gate25.json ?


-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#3978

Fromast <ast@invalid>
Date2022-10-05 09:48 +0200
Message-ID<633d36b1$0$25820$426a74cc@news.free.fr>
In reply to#3977
Le 04/10/2022 à 23:43, Olivier Miakinen a écrit :
> Bonjour,
> 
> Le 04/10/2022 20:18, Pebrok a écrit :
>> Bonjour, j'ai récupéré un script Python pour convertir un fichier .json en
>> fichier .nfc, mais quand je le passe dans IDLE et que k'essaie de le faire
>> tourner, rien ne se passe.
>> J'ai mis tous les fichiers (script .py et fichier .json) dans le même dossier.
>> C:UsersCJ78714Python>
>>
>> J'essaie de vous joindre le script ci-dessous:
>>
>> [...]
>>
>>      in_filename = "Gate25.json"
>>
>>      if len(sys.argv) > 2:
>>          in_filename = int(sys.argv[2])
> 
> Je ne connais pas IDLE, mais est-ce que tu peux lui dire que le répertoire
> courant doit être C:UsersCJ78714Python> lors du lancement ?
> 
> Sinon, est-ce que tu as essayé de passer comme paramètre le chemin complet du
> fichier, comme C:/UsersCJ78714Python>/Gate25.json au lieu de Gate25.json ?
> 
> 

import os

# pour voir où l'on est
os.getcwd()

# pour aller dans un autre répertoire, ici le bureau de windows
os.chdir("C:\\Users\name\\Desktop")

[toc] | [prev] | [next] | [standalone]


#3979

FromOlivier Miakinen <om+news@miakinen.net>
Date2022-10-05 11:27 +0200
Message-ID<thjimq$go3$1@cabale.usenet-fr.net>
In reply to#3978
Le 05/10/2022 09:48, ast a écrit :
>> 
>> Je ne connais pas IDLE, mais est-ce que tu peux lui dire que le répertoire
>> courant doit être C:UsersCJ78714Python> lors du lancement ?
>> 
>> Sinon, est-ce que tu as essayé de passer comme paramètre le chemin complet du
>> fichier, comme C:/UsersCJ78714Python>/Gate25.json au lieu de Gate25.json ?
> 
> import os
> 
> # pour voir où l'on est
> os.getcwd()
> 
> # pour aller dans un autre répertoire, ici le bureau de windows
> os.chdir("C:\\Users\name\\Desktop")

Oui. Par ailleurs j'ai reçu par courriel privé (?) une réponse de quelqu'un
dont l'adresse de courriel est visiblement invalide mais non *suffixée* par
le nom réservé .invalid *sans e* (ce qui n'est pas bien) :

<début de citation>
nom répertoire 'curieux" ?
caractères spéciaux interdits : <, >, :, “, /, \, |, ?, *.
@+
<fin de citation>

Ma réponse est que j'ai recopié tel quel le nom du répertoire donné par
Pebrok. En réalité, je suppose qu'il doit s'agir plutôt de :
C:\Users\CJ78714\Python
... où les \ ont été bouffés par la passerelle web-news, et le > en trop
devait être celui de l'invite de commande.

Cordialement,
-- 
Olivier Miakinen

[toc] | [prev] | [standalone]


Back to top | Article view | fr.comp.lang.python


csiph-web