Fil RSS

[CTF] HoldUp – Forensic 200 – #NdH2k14

0

juin 30, 2014 par Kaluche, 580 vues

A strange file was found in the MtGox Backups…. How many HackerZCoins have mysteriously disappeared ?

Notice : flag shall be something like NDH2K14_XXXXX.YYYYY where XXXXX.YYYYY stands for the number of coins actually stolen.

File (is coming …)

Here we go. We got an ext3 container. Mount it and check what’s inside.

$ file HoldUp.img
HoldUp.img: Linux rev 1.0 ext3 filesystem data, UUID=44a63bd3-5dab-46d1-8f75-2249c3ef6158, volume name "Data"
$ mkdir /tmp/ndh_ext3
$ sudo mount -t ext3 HoldUp.img /tmp/ndh_ext3

Inside the volume, a folder called « coins » with thousand of « .tc » and a python file (splitter.py).

# splitter.py
import time
import hashlib

fic = open('CoinSteal.tc','r')
res = fic.read()

for i in range(16384):
    time.sleep(2)
    fic2 = open('coins/'+hashlib.md5(str(time.time())).hexdigest()+'.tc','wb')
    index_deb=i*512
    index_fin=index_deb+512
    fic2.write(res[index_deb:index_fin])
    fic2.close()

fic.close()

Now, we understand that the file « CoinSteal.tc » has been splitted in 16384 .tc files every two seconds…It’s time to list all .tc  by date and concatenate them. . Go in the « coins » directory and do :

for file in $(ls -rt); do cat $file >> /tmp/CoinSteal.tc; done

 

Nice, you’ve got a new file. If you don’t know it, a quick google search about the .tc extension give you : « TC – True Crypt Virtual Encrypted Disk (Container)« . If you try to mount it in truecrypt, a password is asked. Why not trying to break it with truecrack and the famous « rockyou » passwords list ?

$ truecrack -t CoinSteal.tc -w /usr/share/wordlists/rockyou.txt
TrueCrack v3.0
Website: http://code.google.com/p/truecrack
Contact us: infotruecrack@gmail.com
Found password:        "iloveyou"
Password length:    "9"
Total computations:    "5"

 

WoW, Such nice. We’re on the good way. Mount it now.

lookass@lookass-pc:/tmp$ sudo truecrypt --mount CoinSteal.tc  -p iloveyou /tmp/holdup_tc/

lookass@lookass-pc:/tmp$ ls /tmp/holdup_tc/
Coins

lookass@lookass-pc:/tmp$ ls /tmp/holdup_tc/Coins 
/tmp/holdup_tc/Coins

lookass@lookass-pc:/tmp$ file /tmp/holdup_tc/Coins 
/tmp/holdup_tc/Coins: RAR archive data, v1d, os: Unix

lookass@lookass-pc:/tmp$ cd /tmp/holdup_tc/

lookass@lookass-pc:/tmp/holdup_tc$ unrar e Coins
UNRAR 4.10 freeware      Copyright (c) 1993-2012 Alexander Roshal

Extracting from Coins

Extracting  Coins.ods                                                 OK
All OK

lookass@lookass-pc:/tmp/holdup_tc$ file Coins.ods
Coins.ods: Zip data (MIME type "l&"?)

lookass@lookass-pc:/tmp/holdup_tc$ unzip Coins.ods
Archive:  Coins.ods
inflating: mimetype
inflating: content.xml
inflating: meta.xml
inflating: styles.xml
inflating: META-INF/manifest.xml

 

I think it’s time to strings icon wink [CTF] HoldUp   Forensic 200   #NdH2k14

screenshot 2014 06 30 10 52 06 300x220 [CTF] HoldUp   Forensic 200   #NdH2k14

FLAG : NDH2K14_123231543112.34086598323

 


[CTF] HSCTF – 8 Funky Yellow Ducks (300)

0

mai 26, 2014 par Kaluche, 441 vues

 

Note that this problem was changed to make the adjective more common. Sadly the admin to your cat picture database, Keith, has lost his password. What he does remember is that it is in the form of HSCTF[number from 0 to 9 inclusive][common adjective][a common color][the plural form of the name of a common animal].

All letters except the inital HSCTF(which is uppercase) are lowercase. For instance it might be HSCTF8funkyyellowducks. 

Keith also knows the md5 hash of his password is the hexadecimal string 0c283432b2ef5adea008bcd7c27f4c3f, so you will have to brute force the correct password.

Well, we know exactly what to do. We need to get some dictionnaries about adjectives, colors, and animal to bruteforce the MD5 value, so here we go :

# -*- coding: utf-8 -*-

# Wordlist for the adjectives : https://raw.githubusercontent.com/tomconroy/extend-afinn/master/common-adjectives-parsed.txt
# Wordlist for the color : https://raw.githubusercontent.com/imsky/wordlists/master/adjectives/colors.txt
# Wordlist for the animals : https://raw.githubusercontent.com/hzlzh/Domain-Name-List/master/Animal-words.txt 
# Password Must be something like : (look below) 
# HSCTF[number from 0 to 9 inclusive][common adjective][a common color][the plural form of the name of a common animal]

import hashlib

password = "8funkyyellowducks" # The password to try
password_md5 = "" # The MD5 to try
correct_md5_password = "0c283432b2ef5adea008bcd7c27f4c3f" # The MD5 to test

for x in xrange(0,10):
	dico_adj = open("adjectives.txt","r")
	for adj in dico_adj:

		dico_color = open("colors.txt","r")
		for color in dico_color:

			dico_animal = open("animals.txt","r")
			for animal in dico_animal:

				# [:-1] to remove the carriage return
				password = "HSCTF" + str(x) + adj[:-1] + color[:-1].lower() + animal[:-1].lower()

				# Add a "s" for the plural if not present
				if not password[:-1] == "s":
					password += "s"
				password_md5 = hashlib.md5(password).hexdigest()

				if password_md5 == correct_md5_password:
					print "You've got it ! \r\nRESULT : %s PASSWORD : %s" % (password_md5,password)
					exit(0)

print "No luck :'(  Last try was : " + password_md5 + " with password : " + password
print "Remember, good MD5 is : " + correct_md5_password
print "Try another wordlists !!!"

# RESULT : 0c283432b2ef5adea008bcd7c27f4c3f PASSWORD : HSCTF1calmbluekangaroos

 Flag : HSCTF1calmbluekangaroos


[Android] Contourner la mise à jour de Waze afin d’afficher les radars !

0

février 21, 2014 par Mozo, 1 463 vues

waze logo [Android] Contourner la mise à jour de Waze afin dafficher les radars !

Si vous ne connaissez pas, Waze est un GPS communautaire. Il vous permet de calculer votre itinéraire et de vous guider sur la route tout comme n’importe quel GPS classique (Google Map, TomTom…).

Viens s’ajouter à cela le côté communautaire. Les utilisateurs, (les Wazers) peuvent annoncer et signaler tout ce qu’il se passe sur la route. On peut ainsi signaler des travaux, un ralentissement, mais aussi les radars automatiques et/ou mobiles. Ce qui faisait selon moi tout l’intérêt de l’application.

Seulement voilà, la législation française n’autorise plus l’affichage des radars automatiques et mobiles de manière aussi précise. Les applications comme Coyote s’étaient elles, toutes misent à niveau, ce qui n’était pas le cas de Waze qui vient juste de le faire via une mise à jour de ce matin. Waze n’indique donc plus aujourd’hui (dans sa mouture 3.7.8.0) la position exacte des radars et des contrôles de police… Hors c’était pour moi le gros point positif de l’application !!!

Rassurez vous il existe plusieurs solutions pour contourner le problème :

- Ne faites pas la MAJ.

- Téléchargez l’apk de Waze sur le market Anglais.

- Ou alors si comme moi vous avez fait la MAJ et que vous voulez pas vous embêter à réinstaller l’application, vous pouvez modifier le fichier « preferences » situé dans le répertoire Waze à la racine de votre téléphone.

Editez le fichier et cherchez les lignes suivantes :

GeoConfig.Ignore server config : yes
Alerts.Enable Enforcement Alerts : yes

Changez donc la valeur de ses deux paramètres à « yes » (Le paramètre suivant commençant après le « . »), sauvegardez et le tour est joué ! (Pour moi il a fallu que je fasse une copie du fichier « preference » sur mon ordinateur, que je le modifie et sauvegarde, que je supprime celui sur mon téléphone et que je remplace par celui modifié sur mon ordinateur)


[CTF] Olympic CTF 2014 – Quelques Writeups

0

février 10, 2014 par Arctarus, 561 vues

J’ai eu l’occasion, avec Kaluche, de participer au Olympic CTF 2014 ce week-end, ce qui a permis de voir que le niveau est quand même assez élevé. Cependant, on a pu validé quelques tâches, en voici les writeups.

1 – Freestyle 10 – Trivial

Objectif : Trouver le flag
Données : Hach the Planet_

Pour le coup, celui-ci porte bien son nom, il suffit simplement de faire une recherche « Hack the Planet » sur le Net pour trouver la solution..

Le Flag : !

 

2 – CURLing 10 – Out There

Données : Flag is out there: http://[2a02:6b8:0:141f:fea9:d5ff:fed5:XX01]/

Ici, plutôt logique : on a une URL en IPv6 avec deux caractères manquants. Et bien, on ne se prend pas la tête et on bruteforce toutes les ip’s ! Attention, vous devez être en IPv6 … Autrement, regardez du côté de MIREDO pour de l’encapsulation IPv4/IPv6.

Pour la pratique, j’avais fait en speed un listing des adresses et une ligne de bash pour CURLer tout ça :

for i in $(cat httpipv6.txt ); do curl -g $i --connect-timeout 1; done

Je l’ai refait au propre en python, vraiment pour le fun :

screenshot 2014 02 10 20 47 14 300x166 [CTF] Olympic CTF 2014   Quelques Writeups

 

Et le script :

import urllib
import socket
from termcolor import colored
#If you don't termcolor, comment this line and modify the "print colored(...)" lines

#set global timeout to 1 second
socket.setdefaulttimeout(1)
print "\r\n[!] Here start an awesome IPv6 script ... Be patient !\r\n"  
#array for valid url's
list_url = []

#Loop for testing all addresses
for x in xrange(0,16):
	for y in xrange(0,16):
		#Convert to hex value
		a = str(format(x,'X'))
		b = str(format(y,'X'))
		my_host = "2a02:6b8:0:141f:fea9:d5ff:fed5:" + a + b + "01"
		url = "http://[" + my_host + "]"		
		try:
			#Checking the HTTP OK message
			if urllib.urlopen(url).getcode()==200:
				#Add the url to the  array
				list_url.append(url)
				print colored("[*] Host " + my_host + " is UP BITCH !",'green',attrs=['bold'])
		except Exception, e:
			pass
			#uncomment this to show the timeout messages and errors
			#print colored(my_host + " : " + str(e),'red',attrs=['bold'])

my_input = raw_input("\r\n[!]Do you want to see the HTML source of these(s) " + str(len(list_url)) + " page(s) ? (y/n) : ")		
if my_input=="y":
	for url_valid in list_url:
		print colored("\r\n[*] Here comes the url : " + url_valid + " ! Be attentive sweet heart !\r\n",'green',attrs=['bold'])
		try:
			print urllib.urlopen(url_valid).read(500) + "\r\n"
		except Exception, e:
			print colored(my_host + " : " + str(e),'red',attrs=['bold'])

print "\r\n[!] Exiting ...\r\n"

 

 


[CTF] Nullcon HackIM 2014 – MISC300 Writeup

0

février 7, 2014 par Kaluche, 499 vues

Un fichier audio pour cette épreuve. On sort Audacity et à l’attaque ! En écoutant le mp3, rien de bien fameux. On essaie de le lire à l’envers (« Effets » > « Inverser sens »), et, ça commence bien, on obtient une musique audible !

On remarque de suite que le fichier (stéréo) possède deux canaux (right / left) bien différents l’un de l’autre. En écoutant le canal droit (et en poussant un peu le volume icon wink [CTF] Nullcon HackIM 2014 – MISC300 Writeup ), on entend de joli biiiip biiiip ! Du morse ? Sans doute !

screenshot 2014 02 06 22 02 13 300x174 [CTF] Nullcon HackIM 2014 – MISC300 WriteupMaintenant, on va séparer les deux canaux afin d’extraire le « droit » pour pouvoir le décoder tranquillement : on clique sur « Level3″, puis sur « Séparer la piste stéréo ». On peut maintenant sélectionner la piste stéréo droite seule, et la copier dans un nouveau projet audacity.

screenshot 2014 02 07 01 37 36 300x185 [CTF] Nullcon HackIM 2014 – MISC300 Writeup

A partir de là, deux solutions : on zoom un poil et on lit le morse que l’on décode à la main avec la table correspondante : http://ascii-table.com/morse-code.php. Sympa et ça se fait bien, mais un peu prenant, et je suis plutot fainéant… Alors solutions deux : on extrait le fichier audio en .wav et on utilise un outil qui fait le boulot. Perso, j’ai cherché et trouvé principalement deux trucs : un script python (assez lourd) ou un .exe qui fonctionne très bien avec wine : morse2ascii.exe. J’ai utilisé les deux, mais je vais vous montrer le résultat avec le .exe, qui est plutôt bien fait.

L’option « -m » permet de voir l’output en morse. On commence comme ça histoire de voir ce qu’on récupère.

screenshot 2014 02 07 01 40 15 300x224 [CTF] Nullcon HackIM 2014 – MISC300 Writeup

Bien, mais on ne va pas convertir grand chose avec ça : les caractères ne sont pas séparés par des espaces… Donc, il y a surement mieux, mais le plus rapide que j’ai trouvé ; je rajoute du « blanc » dans Audacity entre les différents caractères qui ne sont  apparemment pas assez espacés. Pour se faire, rien de plus simple : vous copiez une zone « blanche » et vous la coller … Ensuite, on re-exporte en .wav et on relance morse2ascii, et le résultat est beaucoup plus plaisant :

screenshot 2014 02 07 01 45 37 300x224 [CTF] Nullcon HackIM 2014 – MISC300 Writeup

On retire l’option « -m » et jackpot icon wink [CTF] Nullcon HackIM 2014 – MISC300 Writeup (enfin presque, on ne valide pas avec ce flag, j’ai re-regardé et j’ai un bug sur les « ! » en double… BREF :p)

screenshot 2014 02 07 01 49 18 300x224 [CTF] Nullcon HackIM 2014 – MISC300 Writeup


Cyanogen « pour les nuls » avec Cyanogenmod

6

février 6, 2014 par Mozo, 556 vues

logo Cyanogen pour les nuls avec Cyanogenmod

Vous avez toujours hésité à Flasher votre téléphone de peur de faire une bêtise, mais que vous crevez d’envie de vous débarrasser de votre freaking surcouche <insert opérateur here> de *ù$^$:*ù!^$  ?

Alors réjouissez-vous, car les gars de la team Cyanogen vous ont concocté deux petits applicatifs vous permettant de Flasher votre téléphone Android en quelques clics. Même ma grand mère pourrait y arriver, pour vous dire.

téléchargement Cyanogen pour les nuls avec Cyanogenmod

Pour cela, rendez-vous sur le site cyanogenmod.org, cliquez sur GetStarted, et c’est parti. En gros, vous allez installer une application sur votre smartphone qui va vous permettre de le paramétrer comme il faut. Puis vous installez une autre appli sur votre PC qui va se charger de télécharger la bonne ROM Cyanogen (celle qui  correspond à votre smartphone), et va ensuite la flasher.

ATTENTION : Pensez à sauvegarder vos applications et vos photos car la manip « Wipe » complètement votre téléphone.

La liste des Smartphones compatible est disponible ici : http://wiki.cyanogenmod.org/w/Devices

ENJOY !!


[CTF] Nullcon HackIM 2014 – MISC200 Writeup

1

février 4, 2014 par Kaluche, 452 vues

Allez, en speed le deuxième round qui n’était pas plus compliqué que le MISC100.

  • Objectif : Retrouver une adresse mail.
  • Fichier : Level2.swf, Flash donc.

Alors, j’ai quoi sous la main pour analyser cette vilaine bête ? Flasm, qui permet de dissass un swf…Allez zouh :

screenshot 2014 02 04 22 04 51 [CTF] Nullcon HackIM 2014 – MISC200 Writeup

Ça ressemble étrangement à de l’hexa, non? On va remplacer les « % » par des « \x » et convertir en ASCII voir ce que ça donne !

echo -e $(echo "%68%74%74%70%3a%2f%2f%62%69%74%2e%6c%79%2f%31%61%4c%49%59%76%57" | sed 's/%/\\x/g')

Qui nous donne une shorten URL, qui renvoi vers un APK ! On récupère tout ça …

screenshot 2014 02 04 22 13 52 [CTF] Nullcon HackIM 2014 – MISC200 Writeup

On commence par dézipper tout ça. Et on garde en tête ce qu’on cherche : une adresse mail !

lookass@lookass-pc:~$ unzip ctfnullcon.apk -d ctfnullcon
lookass@lookass-pc:~$ ls ctfnullcon
AndroidManifest.xml  classes.dex  res  resources.arsc

Un coup de « cat » dans le AndroidManifest.xml ne donne rien, dommage.

Par contre, un coup de « strings » dans le classes.dex et …

lookass@lookass-pc:~$ cat AndroidManifest.xml | grep @
lookass@lookass-pc:~$ strings classes.dex | grep @
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oss="http://foundstone.com/ws/schema/oss"><soapenv:Header/><soapenv:Body><oss:LoginRequest><oss:username> sam0908nlu771@gmail.com </oss:username><oss:Password>passwordreplace</oss:Password></oss:LoginRequest></soapenv:Body></soapenv:Envelope>

Jackpot, pas besoin d’aller plus loin icon wink [CTF] Nullcon HackIM 2014 – MISC200 Writeup


[CTF] Nullcon HackIM 2014 – MISC100 Writeup

2

février 1, 2014 par Kaluche, 611 vues

Il y avait, du 24 au 26 janvier, quelques challenges du côté du HackIM 2014 (encore accessible à l’heure où j’écris, soit dit en passant). Je n’ai pas pu y passer beaucoup de temps, alors je me rattrape ce week end avec un writeup du MISC100. Pas bien compliqué, vous allez voir.

On récupère un .pcap. L’objectif est de retrouver le nom du magasin devant lequel lequel Sam a garé sa voiture…

On ouvre avec Wireshark, le fichier n’a pas l’air énorme. On regarde vite fait… Bon, pas mal de choses inutiles, et notamment des tas de requêtes sur les DNS de google. Un peu de HTTPS aussi, qui tape chez Google également… Mais surtout des requêtes HTTP qui aboutissent sur une image PNG : nullCTF.png.

screenshot 2014 02 01 16 28 41 300x252 [CTF] Nullcon HackIM 2014   MISC100 Writeup

 

On va la récupérer voir ce que c’est. Deux solutions :

  • « Clic droit » sur « Portable Network Graphics » et « Export Selected Packets Bytes ». Enregistrer l’image en .png où vous voulez.
  • Dans la barre de menu supérieure, « File » > « Export Object » > « HTTP »Enregistrer l’image en .png où vous voulez.

Très bien, on a une image, on l’ouvre, et elle ne nous apporte pas grand chose…en visu, tout du moins ! Bon, que fait-on avec une image ? Et bien, on regarde les data EXIF bien sur !

lookass@lookass-pc:/tmp$ exiftool /tmp/nullcon.png
 ExifTool Version Number : 8.60
 File Name : nullcon.png
 Directory : /tmp
 File Size : 31 kB
 File Modification Date/Time : 2014:02:01 12:43:23+01:00
 File Permissions : rw-r--r--
 File Type : PNG
 MIME Type : image/png
 Image Width : 120
 Image Height : 207
 Bit Depth : 8
 Color Type : RGB with Alpha
 Compression : Deflate/Inflate
 Filter : Adaptive
 Interlace : Noninterlaced
 Exif Byte Order : Little-endian (Intel, II)
 Processing Software : Kr. Sh.
 GPS Version ID : 2.2.0.0
 GPS Latitude Ref : North
 GPS Longitude Ref : West
 GPS Altitude Ref : Above Sea Level
 GPS Map Datum : WGS-84
 Thumbnail Offset : 252
 Thumbnail Length : 3060
 Software : Adobe ImageReady
 GPS Altitude : 1000 m Above Sea Level
 GPS Latitude : 38 deg 51' 35.88" N
 GPS Longitude : 77 deg 3' 22.26" W
 GPS Position : 38 deg 51' 35.88" N, 77 deg 3' 22.26" W
 Image Size : 120x207
 Thumbnail Image : (Binary data 3060 bytes, use -b option to extract)

Mais dites donc, ce ne serait pas des coordonnées GPS ça ? Ça serait possiblement ce qu’on cherche, non ? Allez, on change le format de façon à l’exploiter sur Google Maps

lookass@lookass-pc:/tmp$ exiftool /tmp/nullcon.png -n | grep Position
GPS Position : 38.8599666666667 -77.0561833333333

Maintenant, on GMAPS tout ça, on street view  & kthxbye, u did it.

screenshot 2014 02 01 16 57 50 [CTF] Nullcon HackIM 2014   MISC100 Writeup


BackTrack est mort, vive Kali Linux !

0

mars 13, 2013 par Kaluche, 1 082 vues

kali linux BackTrack est mort, vive Kali Linux !

Ayé, BackTrack hurle « Je m’en vais » et laisse place à Kali 1.0 ! Faisant office de BackTrack V6, c’est une version repensée et restructurée de notre distrib de pentest préférée qui voit aujourd’hui officiellement le jour. Annoncée en janvier dernier avec un teaser qui laissait rêveur, nous allons enfin pouvoir tester ça. Pour les downloads, c’est par ici !

Au niveau des fonctionnalités et des changements, voici quelques infos en vrac :

  • Plus de 300 applis de pentest. Les applis « doublons » ont été évincé, idem pour les défaillantes
  • Compatibilité matériel wifi accrue
  • Dispo pour Raspberry icon smile BackTrack est mort, vive Kali Linux !
  • Multilangues, gratuit, environnement sécurisé,  un GIT open-source, respect des standards Debian, …

J’ai également cru voir que l’on n’avait plus à naviguer dans l’arbo /pentest, et que tout était accessible directement… Je ne retrouve pas ma source, donc je vais tester tout ça asap, doit y’avoir de quoi s’occuper un moment là ! icon smile BackTrack est mort, vive Kali Linux ! Allez, have fun !

cali BackTrack est mort, vive Kali Linux !


Accéder à Active Directory avec Python

7

mars 1, 2013 par Kaluche, 1 478 vues

memes python Accéder à Active Directory avec Python

 

Python-ldap est une API  permettant l’accès à votre annuaire LDAP avec un script Python. Rien de nouveau, c’est connu, mais c’est vraiment pratique et très puissant. L’objectif que je m’étais fixé était de pouvoir stocker dans une liste tous les membres d’un groupe de l’AD, sans doublon, et en détaillant les membres des groupes inclus dans groupes … Bref, tout bêtement du récursif. Si ça intéresse quelqu’un, qu’il le demande ;). Le script ci-dessous permet simplement d’afficher les informations d’un utilisateur. Une fois que vous avez ceci, vous pouvez tout faire très simplement, ça coule de source. A noter que j’ai utilisé python2.7 et python-ldap2.4.10.

# -*- coding: iso-8859-1 *-*
import ldap

ldap.set_option(ldap.OPT_REFERRALS, 0) # Nécessaire chez moi pour éviter le INVALID CREDENTIALS lors du binding

def search_by_samaccount(samaccount):
 con = ldap.initialize("ldap://MONDOMAIN:389") # Remplacez par votre domaine...
 con.simple_bind('MON_ID@MONDOMAIN','MON_PASSWORD')  # Username et password
 base_filter = 'DC=MON,DC=DOMAIN,DC=FR' # Le base filter, ici on cherche à partir de la racine
 search_filter = 'sAMAccountName='+samaccount # Le filtre de recherche
 search_attr = None # Le filtre d'attribut à récupérer. Par exemple, search_attr = ['displayName']. None = No filtre
 search_result = con.search_s(base_filter,ldap.SCOPE_SUBTREE,search_filter,search_attr)
 i = 0
 try:
  for i in range(len(search_result)-4): # Pour chaque personne trouvée, on affiche quelques infos
   print " \n *******************************************\n"
   #print search_result[i] pour afficher tous les attributs
   print search_result[i][1]['sAMAccountName']
   print search_result[i][1]['distinguishedName']
   print search_result[i][1]['displayName']
   print search_result[i][1]['memberOf']
   i = i + 1
 except TypeError,error:
  print error
 con.unbind() # Unbind de la connexion

if __name__ =='__main__':
 sam_input = raw_input("sAMAccountName please ? ")
 search_by_samaccount(sam_input)

 

(suite…)