2015 Nice stabbing

On 3 February 2015, three soldiers, guarding a Jewish community center in Nice, France, were attacked with a knife by Moussa Coulibaly, a lone-wolf terrorist.[1]

2015 Nice stabbing
Part of terrorism in France
LocationNice, France
Date3 February 2015
Attack type
Stabbing
WeaponsKnife
Deaths0
Injured2
AssailantMoussa Coulibaly

Attack

Three soldiers were patrolling outside a Jewish communal building housing a Jewish radio station when Moussa Coulibaly rushed at one of the soldiers with a 20-centimeter (7.8-inch) knife aimed at his throat. Coulibaly only managed to wound that soldier in the face before wounding another soldier in the arm.[2][3][4][5] The bulletproof vests worn by the soldiers prevented more serious injuries.[6]

Coulibaly was arrested while attempting to flee.[3] Two accomplices allegedly fled the scene and were not apprehended.[7]

Perpetrator

Moussa Coulibaly, age 30, had previous convictions for armed robbery and drug-related crimes.[7][3] On 28 January 2015 he flew to Turkey, a popular destination at the time for young Europeans intending to fight for ISIL, but French security authorities contacted Turkish authorities who sent him back to France.[3][6]

He was questioned by police in December 2014 for aggressively sharing his religious beliefs in a gym in Mantes-la-Jolie, Ile-de-France, where he lived with his parents and siblings.[8] Police found handwritten documents about religion in the hotel room near the Gare de Nice-Ville where he was staying at the time of the attack.[8]

Following his arrest, Coulibaly spoke about his hatred of France, of Jews and of the military.[8]

Couliaby was indicted on charges of attempted murder during a terror operation.[7]

Reaction

US President Donald Trump described the Nice stabbing as one of several terrorist incidents that were "unreported" in news media.[9][10]

gollark: I can come up with a thing to transmit ubqmachine™ details to osmarks.net or whatever which people can embed in their code.
gollark: It's an x86-64 system using debian or something.
gollark: > `import hashlib`Hashlib is still important!> `for entry, ubq323 in {**globals(), **__builtins__, **sys.__dict__, **locals(), CONSTANT: Entry()}.items():`Iterate over a bunch of things. I think only the builtins and globals are actually used.The stuff under here using `blake2s` stuff is actually written to be ridiculously unportable, to hinder analysis. This caused issues when trying to run it, so I had to hackily patch in the `/local` thing a few minutes before the deadline.> `for PyObject in gc.get_objects():`When I found out that you could iterate over all objects ever, this had to be incorporated somehow. This actually just looks for some random `os` function, and when it finds it loads the obfuscated code.> `F, G, H, I = typing(lookup[7]), typing(lookup[8]), __import__("functools"), lambda h, i, *a: F(G(h, i))`This is just a convoluted way to define `enumerate(range))` in one nice function.> `print(len(lookup), lookup[3], typing(lookup[3])) #`This is what actually loads the obfuscated stuff. I think.> `class int(typing(lookup[0])):`Here we subclass `complex`. `complex` is used for 2D coordinates within the thing, so I added some helper methods, such as `__iter__`, allowing unpacking of complex numbers into real and imaginary parts, `abs`, which generates a complex number a+ai, and `ℝ`, which provvides the floored real parts of two things.> `class Mаtrix:`This is where the magic happens. It actually uses unicode homoglyphs again, for purposes.> `self = typing("dab7d4733079c8be454e64192ce9d20a91571da25fc443249fc0be859b227e5d")`> `rows = gc`I forgot what exactly the `typing` call is looking up, but these aren't used for anything but making the fake type annotations work.> `def __init__(rows: self, self: rows):`This slightly nonidiomatic function simply initializes the matrix's internals from the 2D array used for inputs.> `if 1 > (typing(lookup[1]) in dir(self)):`A convoluted way to get whether something has `__iter__` or not.
gollark: If you guess randomly the chance of getting none right is 35%ish.
gollark: Anyway, going through #12 in order:> `import math, collections, random, gc, hashlib, sys, hashlib, smtplib, importlib, os.path, itertools, hashlib`> `import hashlib`We need some libraries to work with. Hashlib is very important, so to be sure we have hashlib we make sure to keep importing it.> `ℤ = int`> `ℝ = float`> `Row = "__iter__"`Create some aliases for int and float to make it mildly more obfuscated. `Row` is not used directly in anywhere significant.> `lookup = [...]`These are a bunch of hashes used to look up globals/objects. Some of them are not actually used. There is deliberately a comma missing, because of weird python string concattey things.```pythondef aes256(x, X): import hashlib A = bytearray() for Α, Ҙ in zip(x, hashlib.shake_128(X).digest(x.__len__())): A.append(Α ^ Ҙ) import zlib, marshal, hashlib exec(marshal.loads(zlib.decompress(A)))```Obviously, this is not actual AES-256. It is abusing SHAKE-128's variable length digests to implement what is almost certainly an awful stream cipher. The arbitrary-length hash of our key, X, is XORed with the data. Finally, the result of this is decompressed, loaded (as a marshalled function, which is extremely unportable bytecode I believe), and executed. This is only used to load one piece of obfuscated code, which I may explain later.> `class Entry(ℝ):`This is also only used once, in `typing` below. Its `__init__` function implements Rule 110 in a weird and vaguely golfy way involving some sets and bit manipulation. It inherits from float, but I don't think this does much.> `#raise SystemExit(0)`I did this while debugging the rule 110 but I thought it would be fun to leave it in.> `def typing(CONSTANT: __import__("urllib3")):`This is an obfuscated way to look up objects and load our obfuscated code.> `return getattr(Entry, CONSTANT)`I had significant performance problems, so this incorporates a cache. This was cooler™️ than dicts.

See also

References

  1. Rubin, Alissa (3 February 2017). "Assailant Near Louvre Is Shot by French Soldier". New York Times. Retrieved 15 February 2017.
  2. "Louvre machete attack just latest to target soldiers and police in France". The Local. 3 February 2017. Retrieved 10 February 2017.
  3. de la Baum, Maia (3 February 2013). "French Soldiers Guarding Jewish Site Are Attacked". New York Times. Retrieved 10 February 2017.
  4. "News A timeline of recent mass attacks in France". Deutsche Welle. 15 July 2016. Retrieved 10 February 2017.
  5. "French soldiers wounded in Nice Jewish centre attack". BBC News.
  6. Smith, Laura (3 February 2015). "Attacker stabs two soldiers in Nice, France". CNN.
  7. "Suspect in knifing of soldiers guarding French JCC charged with attempted murder". JTA. France 24. 8 February 2015. Retrieved 10 February 2017.
  8. "French knife attack suspect says he 'hates military, Jews'". France 24. 5 February 2015. Retrieved 10 February 2017.
  9. Fisher, Max (7 February 2017). "Our Articles on the Attacks Trump Says the Media Didn't Cover". New York Times. Retrieved 10 February 2017.
  10. Sterling, Joe (8 February 2017). "How CNN covered the terror attacks on the White House list". CNN. Retrieved 10 February 2017.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.