Move to pystitcher

This commit is contained in:
Nemo 2021-05-29 02:12:31 +05:30
parent a3e1cefaf4
commit 21250cf83d
5 changed files with 44 additions and 114 deletions

View File

@ -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

View File

@ -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

37
book.md Normal file
View File

@ -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)

View File

@ -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

View File

@ -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