From 21250cf83d8e084b845fa0a99e0bdbcd97ffafce Mon Sep 17 00:00:00 2001 From: Nemo Date: Sat, 29 May 2021 02:12:31 +0530 Subject: [PATCH] Move to pystitcher --- Dockerfile | 5 +++-- README.md | 38 ++------------------------------------ book.md | 37 +++++++++++++++++++++++++++++++++++++ generate.sh | 47 ++--------------------------------------------- titles.txt | 31 ------------------------------- 5 files changed, 44 insertions(+), 114 deletions(-) create mode 100644 book.md delete mode 100644 titles.txt diff --git a/Dockerfile b/Dockerfile index cc4ec3e..9c8ef26 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,9 @@ -FROM debian:10-slim +FROM python:3-alpine RUN apt-get update && \ mkdir -p /usr/share/man/man1/ && \ - apt-get install --yes pdftk wget ca-certificates && \ + apt-get install --yes wget ca-certificates && \ + pip install pystitcher && \ apt-get clean WORKDIR /security-engineering-ebook diff --git a/README.md b/README.md index 30a5ebd..34dbc81 100644 --- a/README.md +++ b/README.md @@ -10,45 +10,11 @@ The e-book version is available now for $42 from [Wiley](https://www.wiley.com/e ## Chapters -See `titles.txt` for the bookmark titles used by the script. - -- Preface* -- Chapter 1: What is Security Engineering? -- Chapter 2: Who is the Opponent?* -- Chapter 3: Psychology and Usability -- Chapter 4: Protocols -- Chapter 5: Cryptography -- Chapter 6: Access Control -- Chapter 7: Distributed Systems -- Chapter 8: Economics -- Chapter 9: Multilevel Security -- Chapter 10: Boundaries -- Chapter 11: Inference Control* -- Chapter 12: Banking and Bookkeeping -- Chapter 13: Physical Protection -- Chapter 14: Monitoring and Metering -- Chapter 15: Nuclear Command and Control -- Chapter 16: Security Printing and Seals -- Chapter 17: Biometrics -- Chapter 18: Physical Tamper Resistance -- Chapter 19: Side Channels* -- Chapter 20: Advanced Cryptographic Engineering* -- Chapter 21: Network Attack and Defence -- Chapter 22: Phones* -- Chapter 23: Electronic and Information Warfare -- Chapter 24: Copyright and DRM -- Chapter 25: Taking Stock* -- Chapter 26: Surveillance or Privacy?* -- Chapter 27: Secure Systems Development -- Chapter 28: Assurance and Sustainability -- Chapter 29: Beyond 'Computer Says No' -- Bibliography* - -Chapters marked with \* are available as sample chapters. +See `book.md` for the bookmark titles used by the script. ## How to generate the book? -Run `./generate.sh`. You will need `pdftk`, and `wget` installed. Alternatively, you can run it using Docker. +Run `./generate.sh`. You will need `pystitcher`, and `wget` installed. Alternatively, you can run it using Docker. ### Docker diff --git a/book.md b/book.md new file mode 100644 index 0000000..e679f30 --- /dev/null +++ b/book.md @@ -0,0 +1,37 @@ +title: Security Engineering — Third Edition +author: Ross Anderson + +# Security Engineering + +[Cover](cover.pdf) +[Preface](SEv3-pref-May16.pdf) +[1. What is Security Engineering?](SEv3-ch1-7sep.pdf) +[2. Who is the Opponent?](SEv3-ch2-7sep.pdf) +[3. Psychology and Usability](SEv3-ch3-7sep.pdf) +[4. Protocols](SEv3-ch4-7sep.pdf) +[5. Cryptography](SEv3-ch5-7sep.pdf) +[6. Access Control](SEv3-ch6-7sep.pdf) +[7. Distributed Systems](SEv3-ch7-7sep.pdf) +[8. Economics](SEv3-ch8-7sep.pdf) +[9. Multilevel Security](SEv3-ch9-7sep.pdf) +[10. Boundaries](SEv3-ch10-7sep.pdf) +[11. Inference Control](SEv3-ch11-7sep.pdf) +[12. Banking and Bookkeeping](SEv3-ch12-7sep.pdf) +[13. Physical Protection](SEv3-ch13-7sep.pdf) +[14. Monitoring and Metering](SEv3-ch14-7sep.pdf) +[15. Nuclear Command and Control](SEv3-ch15-7sep.pdf) +[16. Security Printing and Seals](SEv3-ch16-7sep.pdf) +[17. Biometrics](SEv3-ch17-7sep.pdf) +[18. Physical Tamper Resistance](SEv3-ch18-7sep.pdf) +[19. Side Channels](SEv3-ch19-7sep.pdf) +[20. Advanced Cryptographic Engineering](SEv3-ch20-7sep.pdf) +[21. Network Attack and Defence](SEv3-ch21-7sep.pdf) +[22. Phones](SEv3-ch22-7sep.pdf) +[23. Electronic and Information Warfare](SEv3-ch23-7sep.pdf) +[24: Copyright and DRM](SEv3-ch24-7sep.pdf) +[25: Taking Stock](SEv3-ch25-7sep.pdf) +[26. Surveillance or Privacy?](SEv3-ch26-7sep.pdf) +[27. Secure Systems Development](SEv3-ch27-7sep.pdf) +[28. Assurance and Sustainability](SEv3-ch28-7sep.pdf) +[29. Beyond “Computer Says No”](SEv3-ch29-7sep.pdf) +[Bibliography](SEv3-bib-7sep.pdf) \ No newline at end of file diff --git a/generate.sh b/generate.sh index c7292c7..4dd4798 100755 --- a/generate.sh +++ b/generate.sh @@ -13,7 +13,7 @@ function assert_installed() { done } -assert_installed wget pdftk +assert_installed wget if [[ $@ == *'--download-cover-image'* ]]; then echo "Downloading cover image" @@ -34,47 +34,4 @@ echo "Starting PDF download" wget --timeout=10 --timestamping --input-file "urls.txt" echo "All PDFs downloaded" -pdftk cover.pdf ${FILES_LIST[@]} cat output temp.pdf - -echo "PDF files combined" - -if [[ $@ == *'--generate-metadata'* ]]; then - assert_installed qpdf - echo "InfoBegin" > meta.txt - echo "InfoKey: Title" >> meta.txt - echo "InfoValue: Security Engineering — Third Edition" >> meta.txt - - echo "InfoBegin" >> meta.txt - echo "InfoKey: Author" >> meta.txt - echo "InfoValue: Ross Anderson" >> meta.txt - ## We start from page 2 because first is cover and it is not included in urls.txt - PAGE_NUM=2 - echo "BookmarkBegin" >> meta.txt - echo "BookmarkTitle: Cover" >> meta.txt - echo "BookmarkLevel: 1" >> meta.txt - echo "BookmarkPageNumber: 1" >> meta.txt - - chapter_id=0 - readarray -t TITLES < titles.txt - while IFS= read -r line - do - FILENAME=$(basename "$line") - PAGES=$(qpdf --show-npages "$FILENAME") - BOOKMARK_TITLE="${TITLES[$chapter_id]}" - - echo "BookmarkBegin" >> meta.txt - echo "BookmarkTitle: $BOOKMARK_TITLE" >> meta.txt - echo "BookmarkLevel: 1" >> meta.txt - echo "BookmarkPageNumber: $PAGE_NUM" >> meta.txt - chapter_id=$((chapter_id+1)) - PAGE_NUM=$((PAGE_NUM+PAGES)) - done < "$INPUT_FILE" - echo "Metadata updated" -fi - -echo "Bookmarks attached to PDF" - -pdftk temp.pdf update_info meta.txt output $FINAL_PDF -rm temp.pdf - -echo "PDF File generated: $FINAL_PDF" +pystitcher book.md diff --git a/titles.txt b/titles.txt deleted file mode 100644 index 21102b3..0000000 --- a/titles.txt +++ /dev/null @@ -1,31 +0,0 @@ -Preface -1. What is Security Engineering? -2. Who is the Opponent? -3. Psychology and Usability -4. Protocols -5. Cryptography -6. Access Control -7. Distributed Systems -8. Economics -9. Multilevel Security -10. Boundaries -11. Inference Control -12. Banking and Bookkeeping -13. Physical Protection -14. Monitoring and Metering -15. Nuclear Command and Control -16. Security Printing and Seals -17. Biometrics -18. Physical Tamper Resistance -19. Side Channels -20. Advanced Cryptographic Engineering -21. Network Attack and Defence -22. Phones -23. Electronic and Information Warfare -24: Copyright and DRM -25: Taking Stock -26. Surveillance or Privacy? -27. Secure Systems Development -28. Assurance and Sustainability -29. Beyond “Computer Says No” -Bibliography