Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wie viele Buchstaben hat ein Wort bzw. Satz ?

Frage Entwicklung Batch & Shell

Mitglied: monoffel

monoffel (Level 1) - Jetzt verbinden

27.05.2009, aktualisiert 21:24 Uhr, 7461 Aufrufe, 16 Kommentare

Hallo

So... ich hab jezt ewig lang nen langen aufsatz geschrieben, mit allem drum und dran. kaum will ich den abschicken steht da ich bin nicht eingeloggt und die ganze seite text weg.
normal kopier ich bei sowas immer den ganzen text falls sowas passiert, aber genau dann wenn ich glaube es passiert eh nie, passierts !!!!!!!
p.s. die suchfunktion ist kaputt , deshalb hab ich auch nix gefunden

Jezt nochmal in kurzform:

Ich suche nach einer Möglichkeit rauszufinden, wieviele buchstaben ein wert hat:
z.b. set /p pw=Passwort:
????? -> das passwort hat 7 buchstaben

außerdem komme ich einfach nicht mehr weiter bei folgendem plan:
... das pw hat 7 buchstaben
set /a gesamt=%buchstaben%+1 ( weil vor und hinter jeden buchstaben ein random wort soll)
... 8 zufällige längen erstellen (hab ich schon geschafft )
ergebnis z.b. 12 7 18 9 5 11 19 16
::wort 1 generieren
:randomwort%zahl% ( zahl = 1-8 )
set zufallswort%zahl%=%a%%b%%c%%d% ( jeder buchstabe wird einzeln generiert und dann zu einem wort zusammengefügt, dass aber jedesmal unterschiedlich lang ist)*

*hier problem 2

zufällige worter generieren hab ich geschafft, ich schaff das nurnich, jedem wort eine zufällige länge zu geben

danke im vorraus für die antowrten und dafür, dass ihr mir verzeiht, dass ich extrem genervt bin.... (beeinflusst auch rechtschreibung)
Mitglied: bastla
27.05.2009 um 21:40 Uhr
Hallo monoffel!

Die Länge könntest Du (ohne "delayedExpansion", was bei Passwörtern sicherlich vorteilhaft ist) zB so bestimmen:
01.
@echo off & setlocal 
02.
set /p pw=Passwort 
03.
set /a L=0 
04.
:Loop 
05.
call set Z=%%pw:~%L%,1%% 
06.
if defined Z (set /a L+=1 & goto :Loop) 
07.
echo %pw% hat %L% Zeichen
Könntest Du Problem 2 vielleicht noch etwas genauer beschreiben (bin - hoffentlich nur heute - wohl etwas schwer von Begriff)?

Grüße
bastla
Bitte warten ..
Mitglied: monoffel
27.05.2009 um 22:07 Uhr
Hmm also wenn ich das Skript starte, passiert garnichts bzw. der Loop ist unendlich.
Ausgabe echo on: call set z=%pw~[zahl von 1-unendlich],1%
Oder muss ich irgendwo noch was einsetzen ?

Zu delayedexpansion: warum ist es denn schlecht wenn es an ist bei Passwörtern? Is doch eigentlich nur, dass man eine Variable in eine andere setzen kann...

Problem 2:
Also erstma wird %random% durch eine Zahl dividiert, so dass eine Zahl zwischen 0 und 20 rauskommen kann. (Finde ich einfacher und daher besser als diese Loops mit if LEQ , ausßerdem geht es schneller.)
Wenn das PW jezt 5 Buchstaben hat, brauche ich 6 Zufallswörter (Vor jeden Buchstaben ein Wort und +1 für dahinter)

01.
set g=0 
02.
:genlength 
03.
echo %random% > nul  < ----- weil er sonst manchmal keine neue random zahl generiert und stattdessen die alte nochmal benuzt ---------- 
04.
set /a g=%g%+1 
05.
set /a codelength=%random%/1640 
06.
set g%g%=%codelength% 
07.
if %codelength% LEQ 4 set /a g=%g%-1 & goto genlength 
08.
if not %g%==%alleBuchstaben% goto genlength 
09.
echo %g1% %g2% %g3% %g4% %g5% %g6% 
10.
pause
Ausgabe ist dann bei 5 Buchstaben z.B.: 15,18,5,18,15,19

Jezt "nurnoch" :
1 zufallswort mit Länge 15 Ziffern
1 zufallswort mit Länge 18 Ziffern
1 zufallswort mit Länge 5 Ziffern
...usw.

(Was geht ist: Alle zufallswörter verschieden, aber gleich lang; (meistens) alle zufallswörter gleich, aber unterschiedlich lang; oder einfach garnichts ( wenn zu wenig buchstaben ) )
Bitte warten ..
Mitglied: bastla
27.05.2009 um 22:14 Uhr
Hallo monoffel!

Eine "leere" Eingabe hatte ich noch nicht berücksichtigt, daher müsste zur Vermeidung einer Endlosschleife noch vor Zeile 4 eingefügt werden:
if not defined pw (echo Kein Passwort eingegeben! & goto :eof)
Wenn Du eine Eingabe machst, sollte auch die Länge berechnet und ausgegeben werden.

Zu delayedexpansion: warum ist es denn schlecht wenn es an ist bei Passwörtern? Is doch eigentlich nur, dass man eine Variable in eine andere setzen kann...
Weil durch die Tatsache, dass Variable dann durch "!" begrenzt werden, das Rufzeichen als möglicher Bestandteil des Passworts wegfällt ...

Grüße
bastla
Bitte warten ..
Mitglied: monoffel
27.05.2009 um 22:28 Uhr
Ja schade nur, dass es keine leere Eingabe ist

So hab nochmal alles durchgeguckt...
Bei Zeile 06. if defined Z (set /a L+=1 & goto :Loop)
muss wahrscheinlich 06. if defined %Z% (set /a L+=1 & goto :Loop)
hin... (Prozentzeichen fehlen)

Aber als ergebnis kommt jezt immer 0
(Es sei denn ich gebe als Passwort "L" ein... Dann kommt 1 Zeichen , bei "lo" aber auch 1 Zeichen , ebenso bei "lol" ) ?_?
Bitte warten ..
Mitglied: bastla
27.05.2009 um 22:33 Uhr
Hallo monoffel!

Sorry, kann ich nicht nachvollziehen ([Edit] Es sei denn, Du hättest am Ende der Zeile 5 ein Leerzeichen (liegt dann an der Forensoftware) - kann mit dem unten stehenden Code nicht mehr passieren [/Edit] ...

Teste mal folgenden Code:
01.
@echo off & setlocal 
02.
set "pw=Das Passwort" 
03.
set /a L=0 
04.
:Loop 
05.
call set "Z=%%pw:~%L%,1%%" 
06.
if defined Z (set /a L+=1 & goto :Loop) 
07.
echo %pw% hat %L% Zeichen
Zur Zeile 6: Die Prozentzeichen gehören da nicht hin.

Grüße
bastla
Bitte warten ..
Mitglied: monoffel
27.05.2009 um 22:41 Uhr
Ok danke
Ich hab beides nochmal verglichen und ausprobiert und es scheint daran zu liegen:

Geht nicht: call set Z=%%pw:~%L%,1%% (das war im ersten Post)
Geht : call set "Z=%%pw:~%L%,1%%" (2ter Post)

Die "" machen den Unterschied

...Jezt nurnoch Problem 2 und ich bin glücklich

EDIT: Ich glaube wir haben beide den Fehler gefunden >.<
und nochwas zu den setlocal: Was ändert sicht da ? Gibts dann irgendwas was nichtmehr funktioniert...
Bitte warten ..
Mitglied: dog
27.05.2009 um 23:06 Uhr
So... ich hab jezt ewig lang nen langen aufsatz geschrieben, mit allem drum und dran. kaum will ich den abschicken steht da ich bin nicht eingeloggt und die ganze seite text weg.

Da gibt es einen ganz einfachen Trick: Wenn die Fehlermeldung kommt machst du einen zweiten Tab auf, loggst dich in dem wieder ein und drückst im Anderen auf Reload (die POST-Meldung mit OK bestätigen) - schon ist der Artikel gespeichert...
Bitte warten ..
Mitglied: monoffel
27.05.2009 um 23:11 Uhr
Ja aber bis ich gemerkt hab was los war, hab ich schon panich auf zurück gemacht und irgendwas gemacht.
Habs dann nach einloggen versucht mit post melundg dings, aber dann kam ich nur bis schritt 2 bei Beitrag erstellen...
Bitte warten ..
Mitglied: bastla
27.05.2009 um 23:14 Uhr
Hallo monoffel!

Meinst Du mit Problem 2 etwa folgendes?
01.
@echo off & setlocal 
02.
set /p pw=Passwort 
03.
set /a L=0 
04.
if not defined pw (echo Kein Passwort eingegeben! & goto :eof) 
05.
:Loop 
06.
call set "Z=%%pw:~%L%,1%%" 
07.
if defined Z (set /a L+=1 & goto :Loop) 
08.
echo %pw% hat %L% Zeichen 
09.
 
10.
set "Code=" 
11.
set "Lens=" 
12.
set /a L-=1 
13.
 
14.
for /l %%i in (0,1,%L%) do call :ProcessChar %%i 
15.
set /a codelength=%random%/1640 
16.
set "Lens=%Lens%%codelength%" 
17.
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit 
18.
echo %Lens% 
19.
echo %Code% 
20.
goto :eof 
21.
 
22.
:ProcessChar 
23.
set /a codelength=%random%/1640 
24.
set "Lens=%Lens%%codelength%," 
25.
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit 
26.
call set "Code=%Code%%%pw:~%1,1%%" 
27.
goto :eof 
28.
 
29.
:GetRandomDigit 
30.
set "Code=%Code%%random:~-1% 
31.
goto :eof
Zur Verwendung von "delayedExpansion": Probier mal die beiden Beispiele, dann weißt Du, was ich meine ...

Ohne:
01.
@echo off & setlocal 
02.
set "pw=Das Passwort! und noch mehr! ist drin" 
03.
echo %pw%
... und mit:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "pw=Das Passwort! und noch mehr! ist drin" 
03.
echo %pw% 
04.
echo !pw!
Grüße
bastla
Bitte warten ..
Mitglied: monoffel
27.05.2009 um 23:42 Uhr
Hmm ok also der Unterschied ist klar und oben zu den Programm:

(ich versteh es nicht und es geht nicht ... mus ausmachen )
Bitte warten ..
Mitglied: bastla
27.05.2009 um 23:48 Uhr
Hallo monoffel!

Das Programm schreibt vor, zwischen und nach die einzelnen Zeichen des Passworts eine unterschiedliche Anzahl zufällilger Ziffern (und speichert die Stellenanzahl, durch Kommata getrennt - in einem String) - der Ablauf sieht zB so aus:
PasswortABCDEF 
ABCDEF hat 6 Zeichen 
9,15,13,10,14,7,3 
807720380A201087415321475B1525362730284C8158749872D87615299992590E7694298F540 
^   9   ^A^      15     ^...
Grüße
bastla
Bitte warten ..
Mitglied: monoffel
28.05.2009 um 14:33 Uhr
ok... habs geschafft, dass das Programm sich nicht schliesst.


Der weitere Ablauf:

erstma
reg query %key5% /v firstrun
if errorlevel 1 goto setup

bla bla

:setup
dein script...

Wenn ich jezt das PW und die Stellenzahl in der registry speichere (nur zum test)
reg add %key5% /f /v "passwort" /d "%code%"
reg add %key5% /f /v "zeichenfolge" /d "%lens%"
reg add %key5% /f /v "firstrun" /d "0"

...Dann nach dem Setup
unter blabla wird beides ausgelesen:
FOR /F "tokens=2*" %%i in ('reg query %key5% /v passwort^|find "REG_SZ"') do set Vpasswort=%%j
FOR /F "tokens=2*" %%i in ('reg query %key5% /v zeichenfolge^|find "REG_SZ"') do set reglens=%%j

Hier dann die Frage: Wie kriege ich aus dem verschl. PW wieder das richtige?
(z.B. erst 9 Buchstaben löschen, dann einen dalassen, dann 15 löschen...)



...So und dann noch: Bei dir sind es ja Zahlen und mein Skript, um die zufallswörter zu erhalten sieht so aus:
01.
:start2 
02.
echo %random% > nul 
03.
set /a r=%r%+1 
04.
set /a nextnum=%random%/500 
05.
::echo %nextnum% 
06.
if %nextnum%==0 set c%r%=q&goto fertig 
07.
(und so weiter alle zahlen durch) 
08.
if %nextnum%==64 set "c%r%= "&goto fertig 
09.
if %nextnum%==65 set c%r%=e 
10.
:fertig 
11.
if %r%==%codelength% (set /a t=%t%+1& goto codefertig1) else goto start2 
12.
 
13.
:codefertig1 
14.
set code1=%c1%%c2%%c3%%c4%%c5%%c6%%c7%%c8%%c9%%c10%%c11%%c12%%c13%%c14%%c15%%c16%%c17%%c18%%c19%%c20% 
15.
set scode%t%=%code1% 
16.
set r=0 
17.
if %t%==%buchstaben% (goto fertig) else goto start2 
18.
:fertig 
19.
echo %buchstaben% Code(s), Laenge %codelength% : 
20.
echo.%scode1%%scode2%%scode3%%scode4%%scode5%%scode6%%scode7%%scode8%%scode9%%scode10%%scode11%%scode12%%scode13%%scode14%%scode15%%scode16%%scode17%%scode18%%scode19%%scode20%
... Da ist sind natürlich alle Buchstaben gleichlang

Jezt noch beide kombinieren und außerdem wichtig bei deinem, dass keine Länge kleiner als 5 sein sollte.
...und noch so ne Idee, ich könnte nur die Zeichenfolge unsichtbar für regedit machen (name länger als 255 zeichen)
Bitte warten ..
Mitglied: monoffel
29.05.2009 um 22:25 Uhr
Ohh na toll, diesma schreib ich noch nen Kommentar und komme auf die zurück Taste (= wieder alles weg)
Ich hab immer noch nicht alle Probleme gelöst:
1.Wie kriege ich aus dem verschl. PW wieder das richtige? (z.B. erst 9 Buchstaben löschen, dann einen dalassen, dann 15 löschen...)
2.Bei deinem Skript noch machen, dass keins genommen wird, dass kleiner als 5 ist
3.Es müssen natürlich noch Buchstaben rauskommen und nicht nur Zahlen. (Dazu mein Skript oben)
Bitte warten ..
Mitglied: bastla
29.05.2009 um 22:39 Uhr
Hallo monoffel!

Vorweg einmal 1.
01.
@echo off & setlocal 
02.
set "Vpasswort=807720380A201087415321475B1525362730284C8158749872D87615299992590E7694298F540" 
03.
set "reglens=9,15,13,10,14,7,3" 
04.
 
05.
set PW= 
06.
for %%i in (%reglens%) do call :ProcessPart %%i 
07.
echo %PW% 
08.
goto :eof 
09.
 
10.
:ProcessPart 
11.
set /a Pos+=%1 
12.
call set "PW=%%PW%%%%Vpasswort:~%Pos%,1%%" 
13.
::call set "Z=%%Vpasswort:~%Pos%,1%%" 
14.
::set "PW=%PW%%Z%" 
15.
set /a Pos+=1 
16.
goto :eof
und 2.
01.
@echo off & setlocal 
02.
set /p pw=Passwort 
03.
set /a L=0 
04.
if not defined pw (echo Kein Passwort eingegeben! & goto :eof) 
05.
:Loop 
06.
call set "Z=%%pw:~%L%,1%%" 
07.
if defined Z (set /a L+=1 & goto :Loop) 
08.
echo %pw% hat %L% Zeichen 
09.
 
10.
set "Code=" 
11.
set "Lens=" 
12.
set /a L-=1 
13.
 
14.
for /l %%i in (0,1,%L%) do call :ProcessChar %%i 
15.
set /a codelength=%random% %% 16 + 5 
16.
set "Lens=%Lens%%codelength%" 
17.
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit 
18.
echo %Lens% 
19.
echo %Code% 
20.
goto :eof 
21.
 
22.
:ProcessChar 
23.
set /a codelength=%random%%%16+5 
24.
set "Lens=%Lens%%codelength%," 
25.
for /l %%i in (1,1,%codelength%) do call :GetRandomDigit 
26.
call set "Code=%Code%%%pw:~%1,1%%" 
27.
goto :eof 
28.
 
29.
:GetRandomDigit 
30.
set "Code=%Code%%random:~-1% 
31.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: bastla
29.05.2009 um 23:25 Uhr
... und damit nicht nur Ziffern vorkommen, könnte das dann etwa so aussehen:
01.
@echo off & setlocal 
02.
set "Chars=0123456789ABCD...XYZabcd...xyz...:?()[]$" 
03.
::Anzahl der verfügbaren Zeichen angeben oder, 
04.
::wie unten für %pw% gezeigt, Länge mit einer Schleife bestimmen 
05.
set "NumberOfChars=40" 
06.
 
07.
set /p pw=Passwort 
08.
set /a L=0 
09.
if not defined pw (echo Kein Passwort eingegeben! & goto :eof) 
10.
:Loop 
11.
call set "Z=%%pw:~%L%,1%%" 
12.
if defined Z (set /a L+=1 & goto :Loop) 
13.
echo %pw% hat %L% Zeichen 
14.
 
15.
set "Code=" 
16.
set "Lens=" 
17.
set /a L-=1 
18.
 
19.
for /l %%i in (0,1,%L%) do call :ProcessChar %%i 
20.
set /a codelength=%random% %% 16 + 5 
21.
set "Lens=%Lens%%codelength%" 
22.
for /l %%i in (1,1,%codelength%) do call :GetRandomChar 
23.
echo %Lens% 
24.
echo %Code% 
25.
goto :eof 
26.
 
27.
:ProcessChar 
28.
set /a codelength=%random%%%16+5 
29.
set "Lens=%Lens%%codelength%," 
30.
for /l %%i in (1,1,%codelength%) do call :GetRandomChar 
31.
call set "Code=%Code%%%pw:~%1,1%%" 
32.
goto :eof 
33.
 
34.
:GetRandomChar 
35.
set /a Pos=%random% %% %NumberOfChars% 
36.
call set "Code=%%Code%%%%Chars:~%Pos%,1%% 
37.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: monoffel
30.05.2009 um 09:31 Uhr
Ok, klappt alles und dank, dass du dir soviel Arbeit wegen mir gemacht hast.
Man könnte jezt zwar noch die Lens umdrehen oder so, aber es schickt schon. ;)

Ich versuch das ganze jezt noch in eine Datei zu kriegen und dann bin ich fürs erste malwieder fertig.

:EDIT: Wegen dem setlocal (wo ich nich genau weis obs was verhindert bei mir) hab ich am ende wieder endlocal geschrieben...
Das PW wurde zwar immer richtig ausgelesen aber hat dann nichtmehr gegelten als es abgefragt wurde. (Bis ich da mal drauf gekommen bin...)

:EDIT2: So alles geschafft
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...