こんにちは、GX 推進グループの平井です。
CTF について書こうとも思ったのですが CTF についての記事はたくさんあるので、
ちょっとマニアックではありますが OpenVPN について腰を据えてじっくり読んでみようかと思います。
マトリックス、007のようなシリーズものになるかもしれません。
リポジトリやソースコード
OpenVPN の GitHub リポジトリはこちらです。
github.com
2021年10月11日時点での最新バージョンは2.5.4で、最新版のソースコードはこちらからダウンロードできます。
openvpn.net
拡張子ごとのファイル数
blog.tech-monex.com
上記の記事で紹介したコマンドを OpenVPN のリポジトリに使用すると残念ながら上手くいかなかったのと、拡張子ごとのファイル数も知りたかったので、
あらたにこのようなコマンドを使用しました。
find . -type f | awk -F/ '{print $NF}' | awk -F. '{print $NF}' | sort | uniq -c | sort -r
実行結果はこちらです。
128 c 111 h 36 in 28 rst 27 am 13 sh 12 m4 11 cmake 8 README 7 props 7 key 6 vcxproj 5 filters 5 crt 5 conf 4 up 4 rc 4 patch 4 bat 3 winbuild 3 txt 3 ovpn 2 py 2 plugins 2 pl 2 manifest 2 html 2 exports 2 down 2 def 2 IPv6 1 xinetd-server-config 1 xinetd-client-config 1 verify-cn 1 valgrind-suppress 1 usage 1 systemd 1 sub 1 sln 1 rc-sample 1 pem 1 p12 1 missing 1 mbedtls 1 mak 1 loopback-server 1 loopback-client 1 json 1 js 1 install-sh 1 inc 1 guess 1 gitignore 1 gitattributes 1 down-root 1 dovalns 1 doval 1 depcomp 1 configure 1 compile 1 cnf 1 bridge-stop 1 bridge-start 1 auth-pam 1 ac 1 PORTS 1 NEWS 1 Makefile 1 INSTALL 1 GPL 1 ChangeLog 1 COPYING 1 CONTROL 1 AUTHORS 1 8 1 5
GitHub の Languages でもわかりますが、 拡張子が c や h のファイルが多いことからメインで使用されているプログラミング言語が C だということがわかります。
特定の拡張子のファイルの行数
リポジトリの規模、より正確に言えば興味のあるファイルの行数も一応知りたいです。
C 言語だとわかったので、拡張子が c のファイルと拡張子が h のファイルのそれぞれの行数を調べてみました。
まずは c (ソースコード)
$find . -name "*.c" | xargs wc -l | sort -r 104727 合計 8804 ./src/openvpn/options.c 7017 ./src/openvpn/tun.c 4777 ./src/openvpn/init.c 4159 ./src/openvpn/socket.c 4153 ./src/openvpn/manage.c 4146 ./src/openvpn/ssl.c 4069 ./src/openvpn/multi.c 4065 ./src/openvpn/route.c 2409 ./src/compat/compat-lz4.c 2299 ./src/openvpn/ssl_openssl.c 2242 ./src/openvpnserv/interactive.c 2124 ./src/openvpn/forward.c 1957 ./src/openvpn/crypto.c 1547 ./src/openvpn/ssl_mbedtls.c 1519 ./src/openvpn/ssl_verify.c 1512 ./src/openvpn/win32.c 1431 ./src/openvpn/buffer.c 1367 ./src/tapctl/tap.c 1339 ./src/openvpn/networking_sitnl.c 1297 ./src/openvpnmsica/openvpnmsica.c 1264 ./src/openvpn/cryptoapi.c 1190 ./src/openvpn/event.c 1120 ./src/openvpn/crypto_openssl.c 1089 ./src/openvpn/proxy.c 1039 ./src/openvpn/ps.c 1033 ./src/openvpn/pkcs11.c 1031 ./src/plugins/auth-pam/auth-pam.c 1023 ./src/openvpn/plugin.c 1002 ./src/openvpn/error.c 987 ./src/openvpn/crypto_mbedtls.c 943 ./src/openvpn/push.c 861 ./src/openvpn/mtcp.c 839 ./src/openvpn/pool.c 827 ./src/openvpn/misc.c 794 ./src/openvpn/ssl_verify_openssl.c 787 ./src/openvpn/pf.c 778 ./src/openvpn/reliable.c 743 ./src/openvpn/tls_crypt.c 723 ./src/openvpn/schedule.c 695 ./src/openvpn/packet_id.c 657 ./src/openvpn/list.c 652 ./tests/unit_tests/openvpn/test_tls_crypt.c 622 ./src/openvpn/socks.c 615 ./src/openvpn/mroute.c 612 ./sample/sample-plugins/client-connect/sample-client-connect.c 593 ./src/openvpn/helper.c 576 ./src/plugins/down-root/down-root.c 554 ./src/openvpn/ssl_verify_mbedtls.c 541 ./sample/sample-plugins/defer/simple.c 504 ./src/openvpn/argv.c 486 ./src/openvpn/platform.c 464 ./src/openvpn/sig.c 459 ./src/openvpn/env_set.c 445 ./src/openvpn/fragment.c 444 ./src/tapctl/main.c 434 ./src/openvpnserv/automatic.c 428 ./src/openvpn/block_dns.c 424 ./src/openvpn/occ.c 421 ./src/openvpn/ntlm.c 410 ./src/openvpn/auth_token.c 407 ./src/openvpn/networking_iproute2.c 397 ./tests/unit_tests/openvpn/test_auth_token.c 384 ./src/openvpn/mudp.c 366 ./src/openvpn/openvpn.c 348 ./src/openvpnserv/validate.c 346 ./src/openvpn/mtu.c 342 ./src/openvpn/ssl_ncp.c 333 ./src/openvpn/vlan.c 329 ./src/openvpn/perf.c 323 ./src/openvpn/comp-lz4.c 321 ./src/openvpnserv/common.c 319 ./src/openvpn/status.c 310 ./src/openvpnserv/service.c 298 ./sample/sample-plugins/keying-material-exporter-demo/keyingmaterialexporter.c 296 ./sample/sample-plugins/log/log_v3.c 288 ./src/openvpn/run_command.c 286 ./src/openvpn/console_builtin.c 279 ./tests/unit_tests/openvpn/test_buffer.c 278 ./src/openvpn/clinat.c 274 ./src/openvpn/lzo.c 273 ./tests/unit_tests/openvpn/test_argv.c 265 ./src/openvpnmsica/msiex.c 253 ./tests/unit_tests/openvpn/test_networking.c 242 ./src/openvpn/gremlin.c 241 ./tests/unit_tests/openvpn/test_ncp.c 230 ./src/openvpn/proto.c 211 ./src/openvpn/otime.c 210 ./sample/sample-plugins/log/log.c 206 ./src/openvpn/mss.c 203 ./sample/sample-plugins/simple/base64.c 202 ./src/openvpn/base64.c 199 ./src/plugins/auth-pam/pamdl.c 198 ./src/openvpnmsica/dllmain.c 194 ./src/openvpn/pkcs11_openssl.c 190 ./src/openvpn/dhcp.c 184 ./tests/unit_tests/openvpn/test_packet_id.c 184 ./src/openvpn/compstub.c 180 ./src/openvpn/mbuf.c 176 ./src/openvpn/comp.c 164 ./src/openvpn/httpdigest.c 159 ./src/openvpn/pkcs11_mbedtls.c 158 ./tests/unit_tests/openvpn/test_crypto.c 146 ./src/compat/compat-dirname.c 139 ./src/openvpnmsica/msica_arg.c 134 ./src/compat/compat-gettimeofday.c 130 ./sample/sample-plugins/simple/simple.c 127 ./src/openvpn/mstats.c 125 ./src/plugins/auth-pam/utils.c 124 ./src/openvpn/console_systemd.c 116 ./tests/unit_tests/engine-key/libtestengine.c 109 ./src/compat/compat-daemon.c 103 ./src/openvpn/shaper.c 95 ./tests/unit_tests/openvpn/mock_msg.c 94 ./src/openvpn/ping.c 87 ./src/openvpn/fdmisc.c 86 ./src/openvpn/console.c 85 ./tests/unit_tests/plugins/auth-pam/test_search_and_replace.c 84 ./src/openvpn/interval.c 81 ./src/compat/compat-inet_pton.c 78 ./src/compat/compat-inet_ntop.c 70 ./src/openvpn/lladdr.c 61 ./src/compat/compat-strsep.c 60 ./src/openvpn/session_id.c 58 ./tests/unit_tests/example_test/test.c 50 ./src/compat/compat-basename.c 36 ./tests/unit_tests/openvpn/mock_get_random.c 36 ./src/tapctl/error.c 25 ./tests/unit_tests/example_test/test2.c
約10万行で、option.c がもっともでかいようです。
オプションが充実しているみたいですね。
つづいて h (ヘッダーファイル)
$find . -name "*.h" | xargs wc -l | sort -r 25272 合計 1265 ./src/openvpn/socket.h 1222 ./src/openvpn/buffer.h 883 ./include/openvpn-plugin.h 861 ./src/openvpn/options.h 802 ./src/openvpn/openssl_compat.h 764 ./src/compat/compat-lz4.h 738 ./src/openvpn/tun.h 702 ./src/openvpn/crypto_backend.h 688 ./src/openvpn/multi.h 650 ./src/openvpn/syshead.h 622 ./src/openvpn/ssl.h 616 ./src/openvpn/manage.h 603 ./src/openvpn/ssl_common.h 566 ./src/openvpn/ssl_backend.h 565 ./src/openvpn/openvpn.h 554 ./src/openvpn/crypto.h 480 ./src/openvpn/fragment.h 476 ./src/openvpn/reliable.h 447 ./src/openvpn/forward.h 409 ./src/openvpn/route.h 403 ./src/openvpn/error.h 342 ./src/openvpn/packet_id.h 339 ./src/openvpn/proto.h 333 ./src/openvpn/win32.h 327 ./src/openvpn/mtu.h 308 ./src/openvpn/otime.h 305 ./src/openvpn/networking.h 271 ./src/openvpn/ssl_verify_backend.h 271 ./src/openvpn/mroute.h 261 ./src/openvpn/interval.h 247 ./src/openvpn/ssl_verify.h 228 ./src/openvpn/tls_crypt.h 228 ./src/openvpn/misc.h 213 ./src/openvpn/plugin.h 208 ./src/openvpn/comp.h 195 ./src/openvpn/list.h 181 ./src/tapctl/tap.h 181 ./src/openvpn/errlevel.h 178 ./src/openvpn/shaper.h 175 ./config-msvc.h 166 ./src/openvpnmsica/openvpnmsica.h 164 ./src/openvpn/platform.h 163 ./src/openvpn/integer.h 161 ./src/openvpn/event.h 156 ./src/openvpn/occ.h 155 ./src/openvpn/crypto_mbedtls.h 149 ./src/openvpn/init.h 147 ./src/openvpn/pf.h 138 ./include/openvpn-msg.h 137 ./src/openvpn/schedule.h 136 ./src/openvpn/ssl_mbedtls.h 132 ./src/openvpn/auth_token.h 130 ./src/openvpn/lzo.h 125 ./src/openvpn/ring_buffer.h 123 ./src/openvpn/env_set.h 119 ./src/openvpn/sig.h 119 ./src/openvpn/console.h 118 ./src/openvpn/ssl_ncp.h 118 ./src/openvpn/crypto_openssl.h 116 ./src/compat/compat-versionhelpers.h 115 ./src/openvpn/mbuf.h 113 ./src/openvpn/memdbg.h 112 ./src/openvpnmsica/msiex.h 112 ./src/openvpnmsica/msica_arg.h 107 ./src/openvpnserv/service.h 106 ./src/openvpn/pool.h 105 ./src/openvpn/status.h 97 ./src/tapctl/error.h 96 ./src/openvpn/common.h 95 ./src/openvpn/proxy.h 93 ./src/openvpn/push.h 92 ./src/openvpn/perf.h 88 ./src/openvpn/ping.h 86 ./src/openvpn/dhcp.h 82 ./src/openvpn/session_id.h 78 ./src/compat/compat.h 77 ./src/openvpn/ssl_verify_mbedtls.h 77 ./src/openvpn/circ_list.h 76 ./src/openvpn/pkcs11.h 76 ./src/openvpn/mtcp.h 76 ./src/openvpn/argv.h 75 ./src/openvpn/ssl_verify_openssl.h 74 ./src/openvpn/pkcs11_backend.h 73 ./src/openvpn/gremlin.h 71 ./src/openvpn/socks.h 69 ./src/openvpn/block_dns.h 67 ./src/openvpn/run_command.h 67 ./src/openvpn/mudp.h 67 ./src/openvpn/clinat.h 66 ./src/tapctl/basic.h 65 ./src/plugins/auth-pam/utils.h 59 ./src/openvpn/ssl_openssl.h 59 ./src/openvpn/ps.h 59 ./src/openvpn/httpdigest.h 51 ./src/openvpn/mstats.h 49 ./src/openvpn/fdmisc.h 47 ./src/openvpnserv/validate.h 45 ./src/openvpn/base64.h 44 ./src/openvpn/vlan.h 41 ./src/openvpn/comp-lz4.h 40 ./src/openvpn/pushlist.h 39 ./src/openvpn/helper.h 37 ./src/openvpn/networking_iproute2.h 37 ./src/openvpn/basic.h 36 ./src/openvpn/mss.h 34 ./tests/unit_tests/openvpn/mock_msg.h 28 ./src/openvpn/networking_sitnl.h 12 ./src/openvpn/ntlm.h 9 ./src/openvpn/lladdr.h 7 ./src/plugins/auth-pam/pamdl.h 7 ./src/openvpn/cryptoapi.h
socket.c や buffer.c は色々な変数、定数、構造体、関数などを使いそうですね。
ディレクトリ構造
tree コマンドの実行結果はこのようになりました。
. |-- AUTHORS |-- COPYING |-- COPYRIGHT.GPL |-- ChangeLog |-- Changes.rst |-- INSTALL |-- Makefile.am |-- Makefile.in |-- NEWS |-- PORTS |-- README |-- README.IPv6 |-- README.mbedtls |-- TODO.IPv6 |-- aclocal.m4 |-- build | |-- Makefile.am | |-- Makefile.in | |-- ltrc.inc | `-- msvc | |-- Makefile.am | |-- Makefile.in | `-- msvc-generate | |-- Makefile.am | |-- Makefile.in | |-- Makefile.mak | |-- msvc-generate.js | `-- msvc-generate.vcxproj |-- compat.m4 |-- compile |-- config-msvc-version.h.in |-- config-msvc.h |-- config.guess |-- config.h.in |-- config.sub |-- configure |-- configure.ac |-- contrib | |-- OCSP_check | | `-- OCSP_check.sh | |-- README | |-- multilevel-init.patch | |-- openvpn-fwmarkroute-1.00 | | |-- README | | |-- fwmarkroute.down | | `-- fwmarkroute.up | |-- pull-resolv-conf | | |-- client.down | | `-- client.up | |-- vcpkg-ports | | |-- openssl | | | |-- portfile.cmake | | | |-- unix | | | | |-- CMakeLists.txt | | | | |-- portfile.cmake | | | | |-- remove-deps.cmake | | | | `-- vcpkg-cmake-wrapper.cmake | | | |-- usage | | | |-- uwp | | | | |-- EnableUWPSupport.patch | | | | |-- make-openssl.bat | | | | `-- portfile.cmake | | | |-- vcpkg.json | | | `-- windows | | | |-- portfile.cmake | | | `-- vcpkg-cmake-wrapper.cmake | | `-- pkcs11-helper | | |-- 0001-nmake-openssl-1.1.1-support.patch | | |-- CONTROL | | |-- pkcs11-helper-001-RFC7512.patch | | `-- portfile.cmake | `-- vcpkg-triplets | |-- arm64-windows-ovpn.cmake | |-- x64-windows-ovpn.cmake | `-- x86-windows-ovpn.cmake |-- debug | |-- doval | |-- dovalns | `-- valgrind-suppress |-- depcomp |-- distro | |-- Makefile.am | |-- Makefile.in | `-- systemd | |-- Makefile.am | |-- Makefile.in | |-- README.systemd | |-- openvpn-client@.service.in | |-- openvpn-server@.service.in | `-- tmpfiles-openvpn.conf |-- doc | |-- Makefile.am | |-- Makefile.in | |-- README.plugins | |-- doxygen | | |-- Makefile.am | | |-- Makefile.in | | `-- openvpn.doxyfile.in | |-- gui-notes.txt | |-- interactive-service-notes.rst | |-- man-sections | | |-- advanced-options.rst | | |-- client-options.rst | | |-- connection-profiles.rst | | |-- encryption-options.rst | | |-- examples.rst | | |-- generic-options.rst | | |-- inline-files.rst | | |-- link-options.rst | | |-- log-options.rst | | |-- management-options.rst | | |-- network-config.rst | | |-- pkcs11-options.rst | | |-- plugin-options.rst | | |-- protocol-options.rst | | |-- proxy-options.rst | | |-- renegotiation.rst | | |-- script-options.rst | | |-- server-options.rst | | |-- signals.rst | | |-- tls-options.rst | | |-- unsupported-options.rst | | |-- virtual-routing-and-forwarding.rst | | |-- vpn-network-options.rst | | `-- windows-options.rst | |-- management-notes.txt | |-- openvpn-examples.5 | |-- openvpn-examples.5.html | |-- openvpn-examples.5.rst | |-- openvpn.8 | |-- openvpn.8.html | `-- openvpn.8.rst |-- include | |-- Makefile.am | |-- Makefile.in | |-- openvpn-msg.h | |-- openvpn-plugin.h | `-- openvpn-plugin.h.in |-- install-sh |-- ltmain.sh |-- m4 | |-- ax_emptyarray.m4 | |-- ax_socklen_t.m4 | |-- ax_varargs.m4 | |-- libtool.m4 | |-- ltoptions.m4 | |-- ltsugar.m4 | |-- ltversion.m4 | |-- lt~obsolete.m4 | `-- pkg.m4 |-- missing |-- msvc-build.bat |-- msvc-dev.bat |-- msvc-env.bat |-- openvpn.sln |-- sample | |-- Makefile.am | |-- Makefile.in | |-- sample-config-files | | |-- README | | |-- client.conf | | |-- firewall.sh | | |-- home.up | | |-- loopback-client | | |-- loopback-server | | |-- office.up | | |-- openvpn-shutdown.sh | | |-- openvpn-startup.sh | | |-- server.conf | | |-- tls-home.conf | | |-- tls-office.conf | | |-- xinetd-client-config | | `-- xinetd-server-config | |-- sample-keys | | |-- README | | |-- ca.crt | | |-- ca.key | | |-- client-ec.crt | | |-- client-ec.key | | |-- client-pass.key | | |-- client.crt | | |-- client.key | | |-- client.p12 | | |-- dh2048.pem | | |-- gen-sample-keys.sh | | |-- openssl.cnf | | |-- server-ec.crt | | |-- server-ec.key | | |-- server.crt | | |-- server.key | | `-- ta.key | |-- sample-plugins | | |-- Makefile | | |-- Makefile.am | | |-- Makefile.in | | |-- Makefile.plugins | | |-- README | | |-- client-connect | | | |-- README | | | `-- sample-client-connect.c | | |-- defer | | | |-- simple.c | | | |-- simple.def | | | `-- winbuild | | |-- keying-material-exporter-demo | | | |-- README | | | |-- client.ovpn | | | |-- http-client.py | | | |-- http-server.py | | | |-- keyingmaterialexporter.c | | | `-- server.ovpn | | |-- log | | | |-- log.c | | | |-- log_v3.c | | | `-- winbuild | | `-- simple | | |-- base64.c | | |-- simple.c | | |-- simple.def | | `-- winbuild | |-- sample-scripts | | |-- auth-pam.pl | | |-- bridge-start | | |-- bridge-stop | | |-- ucn.pl | | `-- verify-cn | `-- sample-windows | `-- sample.ovpn |-- src | |-- Makefile.am | |-- Makefile.in | |-- compat | | |-- Debug.props | | |-- Makefile.am | | |-- Makefile.in | | |-- PropertySheet.props | | |-- Release.props | | |-- compat-basename.c | | |-- compat-daemon.c | | |-- compat-dirname.c | | |-- compat-gettimeofday.c | | |-- compat-inet_ntop.c | | |-- compat-inet_pton.c | | |-- compat-lz4.c | | |-- compat-lz4.h | | |-- compat-strsep.c | | |-- compat-versionhelpers.h | | |-- compat.h | | |-- compat.vcxproj | | `-- compat.vcxproj.filters | |-- openvpn | | |-- Makefile.am | | |-- Makefile.in | | |-- argv.c | | |-- argv.h | | |-- auth_token.c | | |-- auth_token.h | | |-- base64.c | | |-- base64.h | | |-- basic.h | | |-- block_dns.c | | |-- block_dns.h | | |-- buffer.c | | |-- buffer.h | | |-- circ_list.h | | |-- clinat.c | | |-- clinat.h | | |-- common.h | | |-- comp-lz4.c | | |-- comp-lz4.h | | |-- comp.c | | |-- comp.h | | |-- compstub.c | | |-- console.c | | |-- console.h | | |-- console_builtin.c | | |-- console_systemd.c | | |-- crypto.c | | |-- crypto.h | | |-- crypto_backend.h | | |-- crypto_mbedtls.c | | |-- crypto_mbedtls.h | | |-- crypto_openssl.c | | |-- crypto_openssl.h | | |-- cryptoapi.c | | |-- cryptoapi.h | | |-- dhcp.c | | |-- dhcp.h | | |-- env_set.c | | |-- env_set.h | | |-- errlevel.h | | |-- error.c | | |-- error.h | | |-- event.c | | |-- event.h | | |-- fdmisc.c | | |-- fdmisc.h | | |-- forward.c | | |-- forward.h | | |-- fragment.c | | |-- fragment.h | | |-- gremlin.c | | |-- gremlin.h | | |-- helper.c | | |-- helper.h | | |-- httpdigest.c | | |-- httpdigest.h | | |-- init.c | | |-- init.h | | |-- integer.h | | |-- interval.c | | |-- interval.h | | |-- list.c | | |-- list.h | | |-- lladdr.c | | |-- lladdr.h | | |-- lzo.c | | |-- lzo.h | | |-- manage.c | | |-- manage.h | | |-- mbuf.c | | |-- mbuf.h | | |-- memdbg.h | | |-- misc.c | | |-- misc.h | | |-- mroute.c | | |-- mroute.h | | |-- mss.c | | |-- mss.h | | |-- mstats.c | | |-- mstats.h | | |-- mtcp.c | | |-- mtcp.h | | |-- mtu.c | | |-- mtu.h | | |-- mudp.c | | |-- mudp.h | | |-- multi.c | | |-- multi.h | | |-- networking.h | | |-- networking_iproute2.c | | |-- networking_iproute2.h | | |-- networking_sitnl.c | | |-- networking_sitnl.h | | |-- ntlm.c | | |-- ntlm.h | | |-- occ.c | | |-- occ.h | | |-- openssl_compat.h | | |-- openvpn.c | | |-- openvpn.h | | |-- openvpn.manifest | | |-- openvpn.vcxproj | | |-- openvpn.vcxproj.filters | | |-- openvpn_win32_resources.rc | | |-- options.c | | |-- options.h | | |-- otime.c | | |-- otime.h | | |-- packet_id.c | | |-- packet_id.h | | |-- perf.c | | |-- perf.h | | |-- pf.c | | |-- pf.h | | |-- ping.c | | |-- ping.h | | |-- pkcs11.c | | |-- pkcs11.h | | |-- pkcs11_backend.h | | |-- pkcs11_mbedtls.c | | |-- pkcs11_openssl.c | | |-- platform.c | | |-- platform.h | | |-- plugin.c | | |-- plugin.h | | |-- pool.c | | |-- pool.h | | |-- proto.c | | |-- proto.h | | |-- proxy.c | | |-- proxy.h | | |-- ps.c | | |-- ps.h | | |-- push.c | | |-- push.h | | |-- pushlist.h | | |-- reliable.c | | |-- reliable.h | | |-- ring_buffer.h | | |-- route.c | | |-- route.h | | |-- run_command.c | | |-- run_command.h | | |-- schedule.c | | |-- schedule.h | | |-- session_id.c | | |-- session_id.h | | |-- shaper.c | | |-- shaper.h | | |-- sig.c | | |-- sig.h | | |-- socket.c | | |-- socket.h | | |-- socks.c | | |-- socks.h | | |-- ssl.c | | |-- ssl.h | | |-- ssl_backend.h | | |-- ssl_common.h | | |-- ssl_mbedtls.c | | |-- ssl_mbedtls.h | | |-- ssl_ncp.c | | |-- ssl_ncp.h | | |-- ssl_openssl.c | | |-- ssl_openssl.h | | |-- ssl_verify.c | | |-- ssl_verify.h | | |-- ssl_verify_backend.h | | |-- ssl_verify_mbedtls.c | | |-- ssl_verify_mbedtls.h | | |-- ssl_verify_openssl.c | | |-- ssl_verify_openssl.h | | |-- status.c | | |-- status.h | | |-- syshead.h | | |-- tls_crypt.c | | |-- tls_crypt.h | | |-- tun.c | | |-- tun.h | | |-- vlan.c | | |-- vlan.h | | |-- win32.c | | `-- win32.h | |-- openvpnmsica | | |-- Makefile.am | | |-- Makefile.in | | |-- dllmain.c | | |-- msica_arg.c | | |-- msica_arg.h | | |-- msiex.c | | |-- msiex.h | | |-- openvpnmsica-Debug.props | | |-- openvpnmsica-Release.props | | |-- openvpnmsica.c | | |-- openvpnmsica.h | | |-- openvpnmsica.props | | |-- openvpnmsica.vcxproj | | |-- openvpnmsica.vcxproj.filters | | `-- openvpnmsica_resources.rc | |-- openvpnserv | | |-- Makefile.am | | |-- Makefile.in | | |-- automatic.c | | |-- common.c | | |-- interactive.c | | |-- openvpnserv.vcxproj | | |-- openvpnserv.vcxproj.filters | | |-- openvpnserv_resources.rc | | |-- service.c | | |-- service.h | | |-- validate.c | | `-- validate.h | |-- plugins | | |-- Makefile.am | | |-- Makefile.in | | |-- auth-pam | | | |-- Makefile.am | | | |-- Makefile.in | | | |-- README.auth-pam | | | |-- auth-pam.c | | | |-- auth-pam.exports | | | |-- pamdl.c | | | |-- pamdl.h | | | |-- utils.c | | | `-- utils.h | | `-- down-root | | |-- Makefile.am | | |-- Makefile.in | | |-- README.down-root | | |-- down-root.c | | `-- down-root.exports | `-- tapctl | |-- Makefile.am | |-- Makefile.in | |-- basic.h | |-- error.c | |-- error.h | |-- main.c | |-- tap.c | |-- tap.h | |-- tapctl.exe.manifest | |-- tapctl.props | |-- tapctl.vcxproj | |-- tapctl.vcxproj.filters | `-- tapctl_resources.rc |-- tests | |-- Makefile.am | |-- Makefile.in | |-- t_client.rc-sample | |-- t_client.sh | |-- t_client.sh.in | |-- t_cltsrv-down.sh | |-- t_cltsrv.sh | |-- t_lpback.sh | |-- t_net.sh | |-- unit_tests | | |-- Makefile.am | | |-- Makefile.in | | |-- engine-key | | | |-- Makefile.am | | | |-- Makefile.in | | | |-- check_engine_keys.sh | | | |-- libtestengine.c | | | `-- openssl.cnf.in | | |-- example_test | | | |-- Makefile.am | | | |-- Makefile.in | | | |-- test.c | | | `-- test2.c | | |-- openvpn | | | |-- Makefile.am | | | |-- Makefile.in | | | |-- mock_get_random.c | | | |-- mock_msg.c | | | |-- mock_msg.h | | | |-- test_argv.c | | | |-- test_auth_token.c | | | |-- test_buffer.c | | | |-- test_crypto.c | | | |-- test_ncp.c | | | |-- test_networking.c | | | |-- test_packet_id.c | | | `-- test_tls_crypt.c | | `-- plugins | | |-- Makefile.am | | |-- Makefile.in | | `-- auth-pam | | |-- Makefile.am | | |-- Makefile.in | | `-- test_search_and_replace.c | `-- update_t_client_ips.sh |-- version.m4 `-- version.sh.in 49 directories, 495 files
まずは src/openvpn を読めばよさそうです。
次回予告
src/openvpn のコールグラフを作成して関数呼び出しの全体像を把握し、
main 関数が含まれる openvpn.c およびそのヘッダーファイルである openvpn.h から読もうかと思います。
それではまた。