examples:heartbleed
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
examples:heartbleed [2014-04-11 18:21] – bernd | examples:heartbleed [2014-04-11 22:00] (aktuell) – bernd | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
</ | </ | ||
- | starten. | + | starten. |
+ | |||
+ | < | ||
+ | cat < | ||
+ | </ | ||
+ | |||
+ | oder Gforth starten und dann | ||
+ | |||
+ | <code Forth> | ||
+ | require heartbleed.fs | ||
+ | s" < | ||
+ | </ | ||
+ | |||
+ | Was der Code macht, ist schnell erklärt: Er schickt zuerst ein " | ||
<code Forth> | <code Forth> | ||
Zeile 40: | Zeile 53: | ||
s" / | s" / | ||
random32 4 + 28 r@ read-file throw drop r> close-file throw ; | random32 4 + 28 r@ read-file throw drop r> close-file throw ; | ||
- | |||
- | Create pollfds pollfd %size allot | ||
Variable buggy? | Variable buggy? | ||
Zeile 47: | Zeile 58: | ||
: get-heartbleed ( addr u port -- ) >r 2dup r> buggy? off | : get-heartbleed ( addr u port -- ) >r 2dup r> buggy? off | ||
1000000 set-socket-timeout | 1000000 set-socket-timeout | ||
- | open-socket >r r@ fileno pollfds fd l! POLLIN pollfds events w! | + | open-socket >r |
TLS-header header# r@ write-socket | TLS-header header# r@ write-socket | ||
BEGIN r@ pad $10000 read-socket nip 0= UNTIL | BEGIN r@ pad $10000 read-socket nip 0= UNTIL | ||
Zeile 57: | Zeile 68: | ||
r> close-socket | r> close-socket | ||
type buggy? @ IF ." : Heartbleed detected" | type buggy? @ IF ." : Heartbleed detected" | ||
+ | |||
+ | Variable files | ||
+ | |||
+ | : file-heartbleed ( addr u -- ) | ||
+ | r/w open-file throw files $[]slurp | ||
+ | files [: 443 get-heartbleed ;] $[]map ; | ||
script? [IF] | script? [IF] |
examples/heartbleed.1397233280.txt.gz · Zuletzt geändert: 2014-04-11 18:21 von bernd