International prosecutors have concluded that a Buk missile from Russia shot down Malaysia Airlines MH17 over east Ukraine in July 2014, killing all 298 people on board.

Russia has constantly denied any involvement in the incident, which came months after Ukraine spiraled into a civil war after parliament ousted Russian-backed President Viktor Yanukovych. East Ukraine split from the pro-Europe west and pledged allegiance to Russia.

Investigators said:

“Based on results of the criminal investigation it may be concluded that MH17 was shot down on 17 July 2014 by a 9M38 series missile launched by a Buk system, which was brought in from the territory of the Russian Federation and, after the launch, was subsequently returned to the Russian Federation territory,” said Wilbert Paulissen, lead detective with the Dutch Police.

The investigators also discovered that the people fired the missile in an area controlled by pro-Russian separatists in Ukraine. They found “about 100 people potentially responsible for downing the plane or transporting the missile.” If the investigators make more progress they could possibly bring those people to trial.

Intercepted communications, photos of the missile launcher, and other evidence led the investigators to these conclusions. The officials said evidence showed no other planes in the area, thus disproving the possibility the military shot down the civilian flight:

The report by a team of prosecutors from the Netherlands, Australia, Belgium, Malaysia and Ukraine was significant for applying standards of evidence admissible in court, while still building a case directly implicating Russia, and is likely to open a long diplomatic and legal struggle over the tragedy.

With meticulous detail, working with cellphone records, social media, witness accounts and other evidence, Dutch prosecutors traced Russia’s role in deploying the missile system into Ukraine and its attempt to cover its tracks after the disaster. The inquiry did not name individual culprits and stopped short of saying that Russian soldiers were involved.

Of course, Russian officials laughed off the report:

In Moscow on Wednesday, in anticipation of the release, President Vladimir V. Putin’s spokesman, Dmitri S. Peskov, issued a statement to reporters decrying “speculation” about the plane but it did not refer specifically to the report.

“This whole story, unfortunately, is couched in a huge amount of speculation, unqualified and unprofessional information,” he said. “There are irrefutable facts. In this case, it is important to draw conclusions with due account of the latest published information, that is, the primary data from radars that detected every airborne object that could take off or be in the airspace above militia-controlled territory,” he said.

Russia has tried to present its own evidence to prove its innocence. But the evidence inside this report contradicts everything the Kremlin has provided, including pictures officials released two years ago:

Those radar images, released by the Russian military on Monday, showed nothing near the airliner, he said. “If any missile had existed, it could have been fired only from another territory. I do not say which exactly territory it could be. It is specialists’ business.”

The Dutch-led inquiry seems to refute that claim, as well as a series of sometimes contradictory explanations and chains of events floated by the Kremlin, including that the C.I.A. filled a drone airliner with bodies and crashed it to discredit Russia, or that Ukrainians were trying to shoot down the airplane of Mr. Putin, but hit the civilian airliner instead.

That image contradicted a similar radar image that Russian officials showed two years ago. That depicted two dots — one for the airliner and a second for a Ukrainian fighter jet that Russia suggested could have shot down the passenger plane.

But Ukraine officials showed relief at the findings:

“This puts an end to all of Russia’s attempts to discredit the activities and conclusions of the Joint Investigation Team by spreading distorted or fabricated information,” the Ukrainian foreign ministry said in a statement.