|
| check af fil med md5sum Fra : CykelSmeden fra Aalb~ |
Dato : 06-09-02 21:50 |
|
Jeg har aldrig haf held til at få if sætninger til at virke i shell.
pt slås jeg med følgende linie:
if [test `md5sum nyfil` == `md5sum orgfil`] then
echo ens
else
echo fejl
fi
jeg synes jeg har prøvet alle kombinationer af eksempler/shells, men har
misset noget grundlæggende.
$ md5sum nyfil - og
$ md5sum orgfil -virker
finn
--
--- CykelSmeden.... edb på gadeplan
Hvis intet er anført, taler jeg om RH 7.1
og når jeg spørger, er det bare fordi jeg ved for lidt!
| |
Claus Rasmussen (06-09-2002)
| Kommentar Fra : Claus Rasmussen |
Dato : 06-09-02 22:03 |
|
CykelSmeden fra Aalborg wrote:
> if [test `md5sum nyfil` == `md5sum orgfil`] then
Det må vist være efter temmeligt mange forsøg, du er havnet ved dén
konstruktion
Se her:
if [ bla.bla ]
er nøjagtigt det samme som
if test bla.bla
så dit 'if [ test ... ]' er dobbeltkonfekt. Og '==' er kun noget, man
bruger i C.
Gør i stedet sådan her:
if [ $(md5sum nyfil) = $(md5sum orgfil) ]
$(...) konstruktionen er det samme som `...` men meget nemmere at
læse. Og så er det også muligt at anvende den i flere niveauer.
-Claus
| |
CykelSmeden fra Aalb~ (06-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 06-09-02 22:48 |
|
Claus Rasmussen wrote:
> CykelSmeden fra Aalborg wrote:
>
>> if [test `md5sum nyfil` == `md5sum orgfil`] then
>
> > Gør i stedet sådan her:
>
> if [ $(md5sum nyfil) = $(md5sum orgfil) ]
>
Tak, men det et ikke der det går galt! det er min if konstruktion:
if [ $(cat orgfil) = $(cat nyfil) ] then
echo ens
else
echo uens
endif
det er galt med ordet else, unexpected end of file og hvad ved jeg,
finn
| |
Claus Rasmussen (07-09-2002)
| Kommentar Fra : Claus Rasmussen |
Dato : 07-09-02 14:32 |
|
CykelSmeden fra Aalborg wrote:
> det er galt med ordet else, unexpected end of file og hvad ved jeg,
Ok. Så sådan her:
if [ "$(md5sum < nyfil)" = "$(md5sum < orgfil)" ]
then echo ens
else echo uens
fi
Og indtast det _præcist_ med alle citationstegn, blanke og newlines
som i mit eksempel.
Her er en forklaring:
Hvis du bare skriver 'md5sum nyfil' får du et output i den her stil:
ff961dc5e8da688fa78540651160b223 nyfil
Hvis du skriver 'md5sum orgfile' og filerne er ens, får du flg. output:
ff961dc5e8da688fa78540651160b223 orgfile
Ups. Selv om filerne har den samme checksum, skriver md5sum to linier,
der _ikke_ er ens, fordi den også skriver filnavnene. Det kan vi undgå
ved at sætte md5sum til at læse fra standard input (der altid hedder
'-'). Altså 'md5sum < nyfil' giver
ff961dc5e8da688fa78540651160b223 -
og 'md5sum < orgfile' giver
ff961dc5e8da688fa78540651160b223 -
Derefter er der den krølle, at hvis du skriver
if [ $(md5sum < nyfil) = $(md5sum < orgfil) ]
så vil shellen først udføre de to kommandoer, der står i $(...) før den
giver linien til 'if'. Dvs. der kommer til at stå
if [ ff...23 - = ff...23 - ]
hvilket er en syntaksfejl. Det undgår ved at sætte citationstegn omkring
$(...) udtrykkene. Så bliver ser 'if' nemlig følgende i stedet:
if [ "ff...23 -" = "ff...23 -" ]
Som er et helt lovligt og korrekt udtryk. Sådan.
Desuden bør du nok nærlæse lidt på bash-syntaksen. Du laver for mange fejl
med '==' i stedet for '=', 'then' på samme linie som 'if' uden semikolen,
dobbeltkonfekt med både '[' og 'test', 'endif' i stedet for 'fi', manglende
blanktegn mellem '[' og testen osv. Det betyder at du kommer til at jagte
syntaksfejl i stedet for det, der er dit egentlige problem.
-Claus
| |
Adam Sjøgren (06-09-2002)
| Kommentar Fra : Adam Sjøgren |
Dato : 06-09-02 22:55 |
|
On Fri, 6 Sep 2002 23:48:01 +0200, CykelSmeden fra Aalborg wrote:
> Tak, men det et ikke der det går galt! det er min if konstruktion:
> if [ $(cat orgfil) = $(cat nyfil) ] then echo ens else echo uens
> endif
> det er galt med ordet else, unexpected end of file og hvad ved jeg,
Mangler du ikke bare et semicolon før then?
asjo@virgil $ cat test.sh
#!/bin/sh
if [ $(cat orgfil) = $(cat nyfil) ]; then
echo ens
else
echo uens
fi
asjo@virgil $ echo 0 > orgfil
asjo@virgil $ echo 1 > nyfil
asjo@virgil $ ./test.sh
uens
asjo@virgil $ echo 0 > nyfil
asjo@virgil $ ./test.sh
ens
asjo@virgil $
Mvh.
--
"They are very important clients, they can't wait." Adam Sjøgren
"They're about to." asjo@koldfront.dk
| |
CykelSmeden fra Aalb~ (06-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 06-09-02 23:17 |
|
Adam Sjøgren wrote:
> On Fri, 6 Sep 2002 23:48:01 +0200, CykelSmeden fra Aalborg wrote:
>
Tak - men det er jeg vist blevet for gammel til at lære ;(
Jeg tror det måske er for sent!:
[root@WebSrv /root]# cat passwdmd5 passwdmd6
4bddc70b9455548236624f8bf129bf4a /etc/passwd
4bddc70b9455548236624f8bf129bf4a /etc/passwd
[root@WebSrv /root]# cat ts
#!/bin/sh
if [$(cat passwdmd5) = $(cat passwdmd6)]; then
echo ens
else
echo uens
fi
[root@WebSrv /root]# ./ts
../ts: [4bddc70b9455548236624f8bf129bf4a: command not found
uens
[root@WebSrv /root]#
det var en anden variant jeg går i seng!
finn
| |
Lars Kongshøj (07-09-2002)
| Kommentar Fra : Lars Kongshøj |
Dato : 07-09-02 00:42 |
|
CykelSmeden fra Aalborg wrote:
> [root@WebSrv /root]# cat passwdmd5 passwdmd6
> 4bddc70b9455548236624f8bf129bf4a /etc/passwd
> 4bddc70b9455548236624f8bf129bf4a /etc/passwd
> [root@WebSrv /root]# cat ts
> #!/bin/sh
>
> if [$(cat passwdmd5) = $(cat passwdmd6)]; then
> echo ens
> else
> echo uens
> fi
> [root@WebSrv /root]# ./ts
> ./ts: [4bddc70b9455548236624f8bf129bf4a: command not found
Et ekstra mellemrum mellem [ og $( ville nok hjælpe dig. Og sikkert også
et i den anden ende.
--
Lars Kongshøj
Registrer dig som linux-bruger:
http://counter.li.org/enter-person.php
| |
CykelSmeden fra Aalb~ (07-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 07-09-02 08:16 |
|
Lars Kongshøj wrote:
> CykelSmeden fra Aalborg wrote:
>> [root@WebSrv /root]# cat passwdmd5 passwdmd6
>> 4bddc70b9455548236624f8bf129bf4a /etc/passwd
>> 4bddc70b9455548236624f8bf129bf4a /etc/passwd
>> [root@WebSrv /root]# cat ts
>> #!/bin/sh
>>
>> if [$(cat passwdmd5) = $(cat passwdmd6)]; then
>> echo ens
>> else
>> echo uens
>> fi
>> [root@WebSrv /root]# ./ts
>> ./ts: [4bddc70b9455548236624f8bf129bf4a: command not found
>
> Et ekstra mellemrum mellem [ og $( ville nok hjælpe dig. Og sikkert
> også et i den anden ende.
så ændrer fejlmeddelsen sig til 'too many arguments' ;(
finn
| |
Lars Kongshøj (07-09-2002)
| Kommentar Fra : Lars Kongshøj |
Dato : 07-09-02 08:34 |
|
CykelSmeden fra Aalborg wrote:
> Lars Kongshøj wrote:
> > CykelSmeden fra Aalborg wrote:
> >> [root@WebSrv /root]# cat passwdmd5 passwdmd6
> >> 4bddc70b9455548236624f8bf129bf4a /etc/passwd
> >> 4bddc70b9455548236624f8bf129bf4a /etc/passwd
> >> [root@WebSrv /root]# cat ts
> >> #!/bin/sh
> >>
> >> if [$(cat passwdmd5) = $(cat passwdmd6)]; then
> >> echo ens
> >> else
> >> echo uens
> >> fi
> >> [root@WebSrv /root]# ./ts
> >> ./ts: [4bddc70b9455548236624f8bf129bf4a: command not found
> > Et ekstra mellemrum mellem [ og $( ville nok hjælpe dig. Og sikkert
> > også et i den anden ende.
> så ændrer fejlmeddelsen sig til 'too many arguments' ;(
Det er klart, for dine filer indeholder jo mellemrum. Har ikke selv md5,
men mon ikke det hjælper at bruge du md5 som i det oprindelige eksempel,
i stedet for cat.
Du kan få mere information om [ med 'man test'. Det er lidt svært at se,
men test og [ er den samme kommando!
zsh:root > ls -l '/usr/bin/['
lrwxrwxrwx 1 root root 4 Jan 6 2002 /usr/bin/[ ->
test
--
Lars Kongshøj
Registrer dig som linux-bruger:
http://counter.li.org/enter-person.php
| |
Klaus Alexander Seis~ (07-09-2002)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 07-09-02 08:47 |
|
CykelSmeden fra Ålborg skrev:
>>> if [$(cat passwdmd5) = $(cat passwdmd6)]; then
>>> echo ens
>>> else
>>> echo uens
>>> fi
>>> [root@WebSrv /root]# ./ts
>>> ./ts: [4bddc70b9455548236624f8bf129bf4a: command not found
>>
>> Et ekstra mellemrum mellem [ og $( ville nok hjælpe dig. Og sikkert
>> også et i den anden ende.
>
> så ændrer fejlmeddelsen sig til 'too many arguments' ;(
Siden der nu er mellemrum i linjerne, hvorfor så ikke prøve at
sætte anførselstegn omkring kommandoerne?
#v+
if [ "$(cat passwdmd5)" = "$(cat passwdmd6)" ]; then
echo ens
else
echo uens
fi
#v-
// Klaus
--
><> vandag, môre, altyd saam
| |
Peter Makholm (06-09-2002)
| Kommentar Fra : Peter Makholm |
Dato : 06-09-02 23:32 |
|
"CykelSmeden fra Aalborg" <outlook@acnord.SLET.dk> writes:
> if [test `md5sum nyfil` == `md5sum orgfil`] then
> echo ens
> else
> echo fejl
> fi
Hvis du skal tjekke om filer er ens, hvorfor så ikke bare bruge
cmp(1)?
if cmp -s fil1 fil2; then
echo ens
else
echo uens
fi
Bemærk ingen []'er.
--
Peter Makholm | I have no caps-lock but I must scream...
peter@makholm.net | -- Greg
http://hacking.dk |
| |
CykelSmeden fra Aalb~ (07-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 07-09-02 08:24 |
|
Peter Makholm wrote:
> "CykelSmeden fra Aalborg" <outlook@acnord.SLET.dk> writes:
>
>> if [test `md5sum nyfil` == `md5sum orgfil`] then
>> echo ens
>> else
>> echo fejl
>> fi
>
> Hvis du skal tjekke om filer er ens, hvorfor så ikke bare bruge
> cmp(1)?
>
> if cmp -s fil1 fil2; then
> echo ens
> else
> echo uens
> fi
>
> Bemær ingen []'er.
Mit lidt længere mål er at have nogle md5-checksumfiler over nogele vitale
filer som jeg ikke ønsker en kopi liggende af:
# md5sum /etc/passwd > /chkfiler/passwdmd5 ...osv
så vil jeg jave et script som checker for validiteten af dise filer:
if [$(md5sum /etc/passwd) != $(cat /chkfiler/passwdmd5)] then mail me..
Jeg har et par gange været udsat for angreb, og vil gerne opdage når det
sker!
.. Ja jeg ved det er bedre at være forud for hackere, men det kræver evner
finn
| |
Peter Makholm (07-09-2002)
| Kommentar Fra : Peter Makholm |
Dato : 07-09-02 09:38 |
|
"CykelSmeden fra Aalborg" <outlook@acnord.SLET.dk> writes:
> Mit lidt længere mål er at have nogle md5-checksumfiler over nogele vitale
> filer som jeg ikke ønsker en kopi liggende af:
> så vil jeg jave et script som checker for validiteten af dise filer:
> if [$(md5sum /etc/passwd) != $(cat /chkfiler/passwdmd5)] then mail me..
Min manualside til md5sum siger følgende:
-c Check md5sum of all files listed in file against the checksum
listed in the same file. The actual format of that file is the
same as output of md5sum. That is, each line in the file
describes a file. A line looks like:
<MD5 checksum> <filename>
Du burde altså kunne lave noget ala:
if ! md5sum -c /some/path/md5summer ; then echo "Der er et problem"; fi
Så får du selvfølgelig ikke besked om konkret hvilken fil det er galt
med, men det kan du hurtigt selv finde ud af.
(
Husk at lægge din fil med md5summer et sted som en indtrængende
absolut ingen muligheder har for at ændre i. For eksempel på en CD-RW
placeret i et almindeligt cd-drev.
En anden ting: Overvej hvad hackeren gør når han opdager dit
script og hvordan du undgår at det ødelægger den sikkerhed du tror det
giver dig
)
--
Peter Makholm | I have no caps-lock but I must scream...
peter@makholm.net | -- Greg
http://hacking.dk |
| |
Kim Hansen (07-09-2002)
| Kommentar Fra : Kim Hansen |
Dato : 07-09-02 10:16 |
|
Peter Makholm <peter@makholm.net> writes:
> Du burde altså kunne lave noget ala:
>
> if ! md5sum -c /some/path/md5summer ; then echo "Der er et problem"; fi
>
> Så får du selvfølgelig ikke besked om konkret hvilken fil det er galt
> med, men det kan du hurtigt selv finde ud af.
Tester lige:
kim@kanon $ echo x > x
kim@kanon $ echo y > y
kim@kanon $ md5sum x y > sum
kim@kanon $ cat sum
401b30e3b8b5d629635a5c613cdb7919 x
009520053b00386d1173f3988c55d192 y
kim@kanon $ md5sum -c sum
kim@kanon $ echo z > x
kim@kanon $ md5sum -c sum
md5sum: MD5 check failed for 'x'
kim@kanon $
Derfor kan han nøjes med "md5sum -c /some/path/md5summer", det vil pege
på netop de filer der er rettet i.
Men findes der ikke allerede massere af programmer der gør dette for
netop at afsløre hackede maskiner?
--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.
| |
CykelSmeden fra Aalb~ (07-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 07-09-02 10:55 |
|
Kim Hansen wrote:
>
> Derfor kan han nøjes med "md5sum -c /some/path/md5summer", det vil
> pege på netop de filer der er rettet i.
>
> Men findes der ikke allerede massere af programmer der gør dette for
> netop at afsløre hackede maskiner?
Tak!
jow , men det skal jeg jo lige have lært først :>)
... og dette har så været en led i den opgave
finn
| |
CykelSmeden fra Aalb~ (07-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 07-09-02 10:48 |
|
Peter Makholm wrote:
>
> En anden ting: Overvej hvad hackeren gør når han opdager dit
> script og hvordan du undgår at det ødelægger den sikkerhed du tror det
> giver dig
>
Tak for dit tips. Jeg har naturligvis ingen intentioner om at forlade mig på
'selvbygget sikkerhed', men har har en enkelt gang ved et tilfælde fået
stoppet et angreb ved at opdage det få min. efter det var startet. Jeg kunne
tænke mig at checke checksum af passwd og shadow eks. en gang i timen. En
hacker skal vel have lavet rootaccess inden han kan manipulere med
passwd/shadow eller se root-cron (???)
men selvfølgeligt - det jeg kan finde ud af er barnemad for en hacker :>)
finn
| |
Lars Kongshøj (07-09-2002)
| Kommentar Fra : Lars Kongshøj |
Dato : 07-09-02 11:03 |
|
CykelSmeden fra Aalborg wrote:
> Jeg kunne
> tænke mig at checke checksum af passwd og shadow eks. en gang i timen. En
> hacker skal vel have lavet rootaccess inden han kan manipulere med
> passwd/shadow eller se root-cron (???)
Det har en hacker også ofte. Der er nok ikke mange hackere, der synes at
det er sjovt med sikkerhedshuller, der giver adgang som 'nobody'.
--
Lars Kongshøj
Registrer dig som linux-bruger:
http://counter.li.org/enter-person.php
| |
CykelSmeden fra Aalb~ (08-09-2002)
| Kommentar Fra : CykelSmeden fra Aalb~ |
Dato : 08-09-02 12:17 |
|
Lars Kongshøj wrote:
>
> Det har en hacker også ofte. Der er nok ikke mange hackere, der synes
> at det er sjovt med sikkerhedshuller, der giver adgang som 'nobody'.
Jeg har ingen ide om hvordan hackere oftest kommer ind, men når der er
lukket for root, telnet og ftp bruger de jo nok forskellige servicer og de
fleste kører vel ikke som root, så de må vel manuelt tilrane sig sådan ret.
de tre tilfælde jeg har oplevet, har da også oprette nue brugere (term,
mailer ogdymmy) med root-rights. - men hva' ve' a'
Tak for alle indlæg. Jeg var nok mest overrasket over at md5sum selv kunne
checke filerne med -c.
Jeg havde få dage forinden lært md5 (solaris) at kende, og den kræver et
script 'sidekick.pl' for at checke (tror jeg nok) og jeg fandt md5sum på RH
ved et tilfælde uder søgning.
Jeg har nu en masse at arbejde videre med ....
hilsen finn
| |
|
|