Excel VBA project password megváltoztatása makróval

Excel VBA project password megváltoztatása makróval
2020-10-11T21:56:28+02:00
2020-10-21T08:17:17+02:00
2022-10-15T21:16:31+02:00
PROMETHEUS11
Sziasztok!

Egy egyszerűt kérdeznék,nekem sajnos ez nem egyszerű, de igyekszek tanulni.

Hogyan lehet megváltoztatni a makrót védő jelszót makróval?

Köszönöm a választ, és az eddigi segítséget!
Mutasd a teljes hozzászólást!
Szia PROMETHEUS11!

Figyelem már egy ideje az ötletelést... és én sem tudom a tutit.
Az Excel nem a hozzáférés korlátozásáról vált híressé. Ezt mindannyian tudjuk.
Aki fizikai adottságai miatt sebezhető, annak furfanghoz kell folyamodnia.

Egy makróbarát excel fájl könnyen elvérzik. ... ha megsebzik.
A programkódoknak nem kell a felhasználóid által látogatott fájlban lenniük. Az érzékeny kódrészletek tárolására használj egyéni makró-munkafüzetet! (Makró rögzítés ablak - Makró név: ... - Billentyűparancs: ... - A makró helye: Egyéni makró-munkafüzetben - ...)
Az egyéni makró-munkafüzetet védd jelszóval, tedd egy mások számára hozzáférhetetlen mappába. (Mappa tulajdonságok - Biztonság fül - ... - Mappa tartalmának listázása: Megtagadás - ...) Ezzel kizárod a fizikai hozzáférést. Így azt nem tudják kitömörítéssel manipulálni. Használj egyedi párbeszéd ablakokat! Éreztesd, hogy nálad van az irányítás joga. Használd a munkalap változás figyelését (Private Sub Worksheet.SelectionChange(...)) Korlátozd a használható billentyű kombinációkat. A rejtett munkalapokat tárold egy másik fájlban, amit az engedélyezett, futó makró fog aktívvá tenni. Az ilyen külső munkalapokat tartalmazó fájl szintén védett - mások által nem tallózható mappában legyen!
Tehát a lényeg: Minden, ami bizalmas legyen kiszervezve egy, az operációs rendszer által - és nem az Excel által - védett mappába, fájlba és innen "távvezéreld" a folyamatokat:
Application.Run "PERSONAL.XLSB!BizalmasMakró"
... akkor talán hanyagolhatod a VBA kóddal védett VBA kód kérdését - amit egyébként sem Prometheusznak, hanem Sisyphusnak való feladat :) - bocs!

üdvözlettel
verax
Mutasd a teljes hozzászólást!

  • Nem a VBA jelszavas védelmére gondolsz?

    A régi jelszó ismert?

    Nem koczkázatos egy makróban két jelszót is tárolni?
    Mi a célja az egésznek?
    Mutasd a teljes hozzászólást!
  • Az a problémám, hogy a lapvédelmet és a VBA jelszavas védelmét is le lehet szedni, ha rar-ban megnyitjuk az xlsm-t és ott megkeressük a megfelelő fájlt, és kitörlünk belőle 1 sort.

    Erre szeretnék valamilyen megoldást. Ehhez kellene a feltett kérdésemre a válasz. De ha valaki tud valamilyen más megoldást, én szívesen fogadom.



    A régi jelszó ismert.
    Mutasd a teljes hozzászólást!
  • Vagyi s a kezdeti problémád az hogy az excel védelmi mechanizmusai megkerülhetőek, és erre akarsz olyan megoldást találni ami véd ez ellen?
    Mutasd a teljes hozzászólást!
  • igen, pontosan.

    Csináltam egy bejelentkező ablakot. Ha nem az én Accountommal jelentkeznek be, vagy be sem jelentkeznek, és a makró látja hogy nincs lapvédelem, akkor rárakja a lapvédelmet egy jelszóval.

    Így hiába nyitja meg az excellt .zip kiterjesztéssel, keresi meg a sheet1 xml-t majd törli ki a sheetprotection sort. 

    Viszont ha az excellben nyom egy control+break -et akkor leáll a makró.

    Hogyan lehet a control+break ellen tenni?

    Az is probléma, hogyha elmenti a makróbarát excellt xlsx-ben, akkor meg hozzáférhető olyan sheet, amit én nem szeretnék egyenlőre publikálni. Írtam bele egy olyat, hogyha nem én vagyok bejelentkezve, akkor hiába fedné fel ezeket a sheeteket, nem fog sikerülni. De ha elmenti xlsx-be, akkor viszont igen. Az megoldás lehet, hogyha korlátoznám  VBA-ban azt, hogy csak és kizárólag xlsm-ben lehessen elmenteni, (ezáltal futna a makró) és tiltanám a save as funkciót.

    A VBA project jelszót is le lehet szedni 1 perc alatt a fenti trükkel hasonlóan. Viszont azt nem tudom hogy kell VBA-ban VBA-t védő jelszót újrarakni ha látná a makró, hogy leszedték.

    Mindez jó lenne ha a control+break, azaz nem lehetne leállítani a makrókat. 

    Írtam bele egy olyan sort, hogyha ez az excell nem azon a helyen van ahová én szántam, akkor be sem enged jelentkezni senkit, így használni sem tudja.

    Sajnos az excell nem nyújt elég védelmet, én pedig szeretném valahogy betömni ezeket a biztonsági réseket. Bármilyen ötletet szívesen fogadok!
    Mutasd a teljes hozzászólást!
  • Szia,

      Ctrl-Break kezelése:
    Application.EnableCancelKey = xlDisabled       --> Ctrl-Break letiltva
                                                   = xlErrorHandler --> ErrorHandler
                                                   = xlInterrupt       --> Ctrl-Break letiltásának feloldása
    Mutasd a teljes hozzászólást!
  • Szia!

    Ha ennyire kritikus a file-ban található adatok védelme, akkor nem javaslom hogy excelben legyen.
    Lehet trükközni, szenvedni a védelmmel, meg lehet törni valahogy. Arról nem is beszélve hogy nem csak MS Office tudja megnyitni.

    Használj adatbázist és arra készíts egy frontend alkalmazást.

    Ez sem 100%-os védelem, de ez már nem törhető amatőr módon.
    Mutasd a teljes hozzászólást!
  • Bizonyos embereknek bizonyos jogosultsággal bizonyos adatokat szeretnék elérhetővé tenni ebben az excelben. Ezt megvalósítottam, de ha valaki többet ért az excelhez mint egy Fkeres, belebabrálhat. Muszáj excelt használnom erre, mert a cégben a hálózati meghajtóra nem lehet mást tenni, mint PDF, képfájlok, Excel, word, stb. Semmi egyéb használhatót.

    Már csak arra lenne szükségem, hogy hogyan lehet a VBA-t védő jelszót módosítani VBA-ban.

    Ha ezt tudnám, akkor részemről elégedett lennék a munkámmal. 

    Persze semmi sem 100% de ha lehet 80, akkor legyen 80.

    Köszönöm!
    Mutasd a teljes hozzászólást!
  • Ha javasolhatom, felejtsd el az Excelt ebben a szituációban.
    Mert hiába rakod vissza a lapvédelmet, ha a makróban megadod a jelszót, akkor az onnan - Excel nélkül, sima filenézegetővel is - bármikor kiolvasható, ugyanis a VBA kódot nem titkosítja el mentéskor. Értsd: plan-text-ként benne lesz az állományban.
    Mutasd a teljes hozzászólást!
  • Én is gondoltam erre, emiatt gondoltam azt, hogy nem konkrétan a jelszót adom meg, hanem úgy megbonyolítom, hogy abból csak a jó Isten jönne rá hogy mi a jelszó. A jelszó lehetne akár dinamikus. Ezt megtudom csinálni, csak a Makrót védő jelszó VBA-ban történő megváltoztatását nem ismerem. 


    Amíg nem találom meg a megoldást, addig is megoldottam hogy ha nem én vagyok bejelentkezve, akkor: 

        Application.DisplayFullScreen = True
        ActiveWindow.DisplayHeadings = False
        Application.DisplayFormulaBar = False

    És  minden ALT-al kezdődő billentyűkombinációt letilt.  Tehát a jelszó babrálása helyett inkább elérhetetlenné igyekszek tenni a VBA-t.
    Mutasd a teljes hozzászólást!
  • Szia!

    Ha van egy állandóan műkődő windows vas, oda felpakolsz egy adatbázist.
    ODBC-n keresztül hitelesítesz egy mondjuk alap access frontenden.
    File-ban nem tárolsz le jelszót..
    Így a hitelesítés és jelszóvédelem már nem egy excel, vagy access file-on múlik, amit bármikor fél perc alatt megtör egy hozzá értő személy, hanem az adatbázis szerveren.
    Pl free mysql.

    Ráadásul az adatok tárolása is biztonságosabb mint egy exel file-ban.
    A mentés is.... a közös használat is...
    Mutasd a teljes hozzászólást!
  • Szia PROMETHEUS11!

    Figyelem már egy ideje az ötletelést... és én sem tudom a tutit.
    Az Excel nem a hozzáférés korlátozásáról vált híressé. Ezt mindannyian tudjuk.
    Aki fizikai adottságai miatt sebezhető, annak furfanghoz kell folyamodnia.

    Egy makróbarát excel fájl könnyen elvérzik. ... ha megsebzik.
    A programkódoknak nem kell a felhasználóid által látogatott fájlban lenniük. Az érzékeny kódrészletek tárolására használj egyéni makró-munkafüzetet! (Makró rögzítés ablak - Makró név: ... - Billentyűparancs: ... - A makró helye: Egyéni makró-munkafüzetben - ...)
    Az egyéni makró-munkafüzetet védd jelszóval, tedd egy mások számára hozzáférhetetlen mappába. (Mappa tulajdonságok - Biztonság fül - ... - Mappa tartalmának listázása: Megtagadás - ...) Ezzel kizárod a fizikai hozzáférést. Így azt nem tudják kitömörítéssel manipulálni. Használj egyedi párbeszéd ablakokat! Éreztesd, hogy nálad van az irányítás joga. Használd a munkalap változás figyelését (Private Sub Worksheet.SelectionChange(...)) Korlátozd a használható billentyű kombinációkat. A rejtett munkalapokat tárold egy másik fájlban, amit az engedélyezett, futó makró fog aktívvá tenni. Az ilyen külső munkalapokat tartalmazó fájl szintén védett - mások által nem tallózható mappában legyen!
    Tehát a lényeg: Minden, ami bizalmas legyen kiszervezve egy, az operációs rendszer által - és nem az Excel által - védett mappába, fájlba és innen "távvezéreld" a folyamatokat:
    Application.Run "PERSONAL.XLSB!BizalmasMakró"
    ... akkor talán hanyagolhatod a VBA kóddal védett VBA kód kérdését - amit egyébként sem Prometheusznak, hanem Sisyphusnak való feladat :) - bocs!

    üdvözlettel
    verax
    Mutasd a teljes hozzászólást!
  • Köszönöm!
    Én is ezekre a következtetésekre jutottam, hogy mindezt egyetlen excellben nem lehet megoldani. El is kezdtem mindezt megalkotni. 
    Azért csak furdal a kiváncsiság már csak azért is, hogy van e megoldás a makrós makró jelszóra ( :
    Mutasd a teljes hozzászólást!
  • Ha hozzáférhetetlen egy mappa, akkor a VBA azt hogy fogja hozzáférhetővé tenni?
    Ha sikerül is akkor annak módja hogy nem olvasható ki a kódból?
    Csak erre lennék kíváncsi.
    Ha ezt : PERSONAL.XLSB látom a kódban, mi akadályoz meg abban hogy megnyissam a file-t?
    Mutasd a teljes hozzászólást!
  • Szia!

    Ha ezt : PERSONAL.XLSB látom a kódban, mi akadályoz meg abban hogy megnyissam a file-t? 

    esetleg konkrétan az, hogy ez csak az én gépemen van, és fizikailag nem férsz hozzá? Ha a makró meg nem találja, akkor hibakezeléssel továbblép, és kész.
    Már ha jól gondolom.
    Mutasd a teljes hozzászólást!
  • Szia István Kövics!

    Az utolsó kérdésedre a rövid válasz: az operációs rendszer.
    A Mappa tartalmánal listázása lesz megtagadva a meghatározott felhasználói csoport tagjai előtt. Tehát, ha egy olyan felhasználó szeretné az xlsm (kvázi zip) állományt nem az EXCEL programból, hanem például szövegszerkeztőből megnyitni, akinek nincs belépési (listázási, tallózási, ...) joga, az nem tud a (kívülről) fájlhoz hozzáférni, mert az operációs rendszer védi és így nem tudja az ismert módon kiiktatni a makróvédelmet. Az EXCEL programkörnyezetből (belülről) pedig az EXCEL védi, így szintén nem tudja a jelszót kiiktatni. 

    üdvözlettel
    verax
    Mutasd a teljes hozzászólást!
  • Szia!

    Ha tallózási joga nincs, de megynyitási igen, akkor ismerve az elérési utat, a file nevét, miért ne tudná megnyitni?
    Ha nem tudná megnyitni akkor excelből sem menne.
    Mutasd a teljes hozzászólást!
  • Szia István Kövics!

    1. Az egyéni makró-munkafüzetet lehet jelszóval védeni  (Alt+F11 - Tools - VBAProject Properties...)
    Ez tény. Ezt a védelmet záros határidőn belül Excel környezetből kiiktatni csak a jelszó ismeretében lehet.
    2. Az Excel, a jelszóval védett VBA kódokat minden további kérdezősködés és feltétel nélkül képes és hajlandó futtatni. Tehát a gondosan megírt és jelszóval védett makrók minden gond nélkül megjelenítik futásuk eredményét. Azt azonban, hogy milyen módon jutottak a látható eredményre - azaz magát a VBA kódot - nem árulják el, csak a jelszót ismerő felhasználónak.
    Tehát a jelszóval való védelem nem okoz futtatási problémát.
    3.

    Ha tallózási joga nincs, de megnyitási igen, akkor ismerve az elérési utat, a file nevét,...

    Hiába látod, tudod, hogy melyik mappában, milyen néven van tárolva a megismerni vágyott makrókat tartalmazó fájl. Ahhoz, hogy hozzáférhess a fájlhoz az első lépésként akár közvetlenül kézi vezérléssel, akár közvetett módon egy szoftveren keresztül be kell lépni a mappába. Csakhogy a belépéssel már olvasható, listázható lenne a mappa tartalma, és éppen ez van megtagadva a felhasználók és a felhasználói szoftverek számára. A Rendszer és a rendszergazdák továbbra is hozzáférnek az állományokhoz, hiszen azoknak a csoportnak a hozzáférését nem korlátoztuk.
    4.

    ... miért ne tudná megnyitni?
    Ha nem tudná megnyitni akkor excelből sem menne.

    Próbáld ki! Ez az alap! Írhatok neked akármennyit erről... A feltételezéseidet magadnak kell tisztáznod. Én előbb mindig kipróbálom, amit aztán ajánlok. És azt se felejtsd el, hogy az operációs rendszer védelme sem kijátszhatatlan!

    üdvözlettel
    verax
    Mutasd a teljes hozzászólást!
  • 1. Az egyéni makró-munkafüzetet lehet jelszóval védeni

    Ne viccelj már, pont az a baj hogy fél perc feltörni ezt a "védelmet"
    Ha nem így lenne, nem létezne ez a topic.

    Ahhoz, hogy hozzáférhess a fájlhoz az első lépésként akár közvetlenül kézi vezérléssel, akár közvetett módon egy szoftveren keresztül be kell lépni a mappába.

    Miért is?
    Dirketben megadom a programnak az elérési utat, vagy csak akár sima parancsorban megava az elérési utat, másik elérési helyre másolom.
    Sőt ha írási jog is maradt,akkor akár törlöm is az eredeti helyéről.
    Ehhez nem kell, nem szükséges a tallózási jog.

    s azt se felejtsd el, hogy az operációs rendszer védelme sem kijátszhatatlan!

    Ezt nem is vitattam.
    Viszont nagyságrendekkel jobb a védelme, mint az MS excelnek.
    Viszont a tallózás jog megvonása csak annyira komoly védelem kb. mint az excel lapvédelem
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd